我是业余/初学Java程序员。我编写了以下GUI类来练习我自学的技能。
我收到了很多语法错误。
这是我的班级:
package MyGUIStuff;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.Scanner;
public class MyFrame {
public static void main(String[] args) {
// TODO Auto-generated method stub
JLabel lbl = new JLabel ("Register:");
JTextField jtf = new JTextField (20);
JPanel pnl = new JPanel();
JFrame frame = new JFrame ("File Writer");
frame.setSize(400, 300);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
pnl.add(lbl);
pnl.add(jtf);
jtf.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
String str = new String (jtf.getText());
File file = new File ("register.txt");
if (!file.exists())
{
file.createNewFile();
}
FileWriter fw = new FileWriter (file.getAbsoluteFile(), true);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(str);
bw.newLine();
bw.close();
System.out.println("Done!");
}catch (IOException e){
e.printStackTrace();
}
});
frame.add(pnl);
}
}
如何解决错误?
答案 0 :(得分:1)
修复大量错误的方法是忽略除第一个错误之外的所有错误。修复,重新编译并修复第一个错误。修复,重新编译并修复第一个错误。等等。
所以我得到的第一个错误是:
MyFrame.java:50: error: illegal start of type
});
^
我看看第50行附近发生了什么。我注意到actionPerformed
方法缺少其右括号。我插入它,以便第50行周围的代码如下所示:
}catch (IOException e){
e.printStackTrace();
}
}
});
然后我重新编译并查看错误列表。
仅修复第一个错误然后重新编译的好处之一是,几个错误通常会神奇地消失。通过仅修复第一个错误,我们将6个错误降低到只有1个错误:
MyFrame.java:46: error: variable e is already defined in method actionPerformed(ActionEvent)
}catch (IOException e){
^
我环顾四周,看看宣布e
的位置。它在两个地方声明:actionPerformed
方法的参数和catch
块中捕获的异常。其中一个需要重命名。我将捕获的异常重命名为ex
:
}catch (IOException ex){
ex.printStackTrace();
}
然后我重新编译并查看错误列表。
现在没有编译时错误。如果这是我的程序,那就是我要确保它正常工作。