ActionListener 语法错误
syntax error with ActionListener
这是我的小应用程序代码的一部分,我在第 50 行和第 85 行肯定有语法错误,任何人都可以帮助我并检查 you.this 应用程序正在做什么只有一件事,点击一个按钮,它会带你选择 txt 文件,应用程序将读取和更改一个词而不是另一个词,并且假设用相同的名称保存它:
public void initListeners() {
chooseFile.addActionListener(e)-> {
JFileChooser fs = new JFileChooser(new File("C:\"));
fs.setDialogTitle("Choose document to change");
fs.setFileFilter(new FileTypeFilter(".txt", " New Text Document"));
int result = fs.showOpenDialog(null);
if (result == JFileChooser.APPROVE_OPTION) {
BufferedReader br;
String fulltext = " ";
try {
File fi = fs.getSelectedFile();
br = new BufferedReader(new FileReader(fi.getPath()));
String line;
int i = 0;
while ((line = br.readLine()) != null) {
fulltext += line + "\r\n";
}
br.close();
fulltext = fulltext.replace("tekst", "cs101");
} catch (FileNotFoundException e) {
JOptionPane.showMessageDialog(null, e.getMessage());
} catch (IOException ex) {
JOptionPane.showMessageDialog(null, ex.getMessage());
}
PrintWriter upis;
try {
upis = new PrintWriter("C:\Users\Maksimovic\Desktop\tekstzaobradu.txt");
upis.append(fulltext);
upis.close();
} catch (FileNotFoundException ex) {
JOptionPane.showMessageDialog(null, ex.getMessage());
}
}
};
}
变化:
.addActionListener(ActionEvent e)-> {
至
.addActionListener(e -> {
使用 lambda 快捷方式时,您不需要或不应该存在参数类型。至于第 85 行,您需要更好地格式化代码以便我们理解它。
编辑,85 需要一个右括号来结束 addActionListener
方法调用。
public void initListeners(){
chooseFile.addActionListener(e -> {
JFileChooser fs=new JFileChooser(new File("C:\"));
fs.setDialogTitle("Choose document to change");
fs.setFileFilter(new FileTypeFilter(".txt"," New Text Document"));
int result=fs.showOpenDialog(null);
if(result==JFileChooser.APPROVE_OPTION){
BufferedReader br;
String fulltext=" ";
try {
File fi=fs.getSelectedFile();
br=new BufferedReader(new FileReader(fi.getPath()));
String line;
int i=0;
while((line=br.readLine())!=null){
fulltext+=line+"\r\n";
}
br.close();
fulltext=fulltext.replace("text","cs101");
} catch (FileNotFoundException e) {
JOptionPane.showMessageDialog(null, e.getMessage() );
}catch(IOException ex){
JOptionPane.showMessageDialog(null, ex.getMessage() );
}
PrintWriter input;
try {
upis=new PrintWriter(new FileWriter(fi.getPath));
upis.append(fulltext);
upis.close();
} catch (FileNotFoundException ex) {
JOptionPane.showMessageDialog(null, ex.getMessage() );
}
}
});
}
旁注:如果这是我的项目,我会将大部分代码放在自己的方法中,以简化和简化调试。
例如,
public void initListeners(){
chooseFile.addActionListener(e -> chooseFileActionPerformed());
}
同时考虑使用 AbstractActions 代替 ActionListeners。这有助于将程序逻辑与视图分开。
附带问题:您的文件输入和输出代码应该在 Swing 事件线程之外并在它自己的后台工作线程中完成,例如由 SwingWorker 提供的。这应该会使您的 GUI 响应更快。
这是我的小应用程序代码的一部分,我在第 50 行和第 85 行肯定有语法错误,任何人都可以帮助我并检查 you.this 应用程序正在做什么只有一件事,点击一个按钮,它会带你选择 txt 文件,应用程序将读取和更改一个词而不是另一个词,并且假设用相同的名称保存它:
public void initListeners() {
chooseFile.addActionListener(e)-> {
JFileChooser fs = new JFileChooser(new File("C:\"));
fs.setDialogTitle("Choose document to change");
fs.setFileFilter(new FileTypeFilter(".txt", " New Text Document"));
int result = fs.showOpenDialog(null);
if (result == JFileChooser.APPROVE_OPTION) {
BufferedReader br;
String fulltext = " ";
try {
File fi = fs.getSelectedFile();
br = new BufferedReader(new FileReader(fi.getPath()));
String line;
int i = 0;
while ((line = br.readLine()) != null) {
fulltext += line + "\r\n";
}
br.close();
fulltext = fulltext.replace("tekst", "cs101");
} catch (FileNotFoundException e) {
JOptionPane.showMessageDialog(null, e.getMessage());
} catch (IOException ex) {
JOptionPane.showMessageDialog(null, ex.getMessage());
}
PrintWriter upis;
try {
upis = new PrintWriter("C:\Users\Maksimovic\Desktop\tekstzaobradu.txt");
upis.append(fulltext);
upis.close();
} catch (FileNotFoundException ex) {
JOptionPane.showMessageDialog(null, ex.getMessage());
}
}
};
}
变化:
.addActionListener(ActionEvent e)-> {
至
.addActionListener(e -> {
使用 lambda 快捷方式时,您不需要或不应该存在参数类型。至于第 85 行,您需要更好地格式化代码以便我们理解它。
编辑,85 需要一个右括号来结束 addActionListener
方法调用。
public void initListeners(){
chooseFile.addActionListener(e -> {
JFileChooser fs=new JFileChooser(new File("C:\"));
fs.setDialogTitle("Choose document to change");
fs.setFileFilter(new FileTypeFilter(".txt"," New Text Document"));
int result=fs.showOpenDialog(null);
if(result==JFileChooser.APPROVE_OPTION){
BufferedReader br;
String fulltext=" ";
try {
File fi=fs.getSelectedFile();
br=new BufferedReader(new FileReader(fi.getPath()));
String line;
int i=0;
while((line=br.readLine())!=null){
fulltext+=line+"\r\n";
}
br.close();
fulltext=fulltext.replace("text","cs101");
} catch (FileNotFoundException e) {
JOptionPane.showMessageDialog(null, e.getMessage() );
}catch(IOException ex){
JOptionPane.showMessageDialog(null, ex.getMessage() );
}
PrintWriter input;
try {
upis=new PrintWriter(new FileWriter(fi.getPath));
upis.append(fulltext);
upis.close();
} catch (FileNotFoundException ex) {
JOptionPane.showMessageDialog(null, ex.getMessage() );
}
}
});
}
旁注:如果这是我的项目,我会将大部分代码放在自己的方法中,以简化和简化调试。
例如,
public void initListeners(){
chooseFile.addActionListener(e -> chooseFileActionPerformed());
}
同时考虑使用 AbstractActions 代替 ActionListeners。这有助于将程序逻辑与视图分开。
附带问题:您的文件输入和输出代码应该在 Swing 事件线程之外并在它自己的后台工作线程中完成,例如由 SwingWorker 提供的。这应该会使您的 GUI 响应更快。