我只是从Java开始,并尝试使用一些在网上找到的示例代码来入门,但是由于某些原因,我无法编译此代码。我在Ubuntu 16.04上安装了“ default-jdk”。
代码如下:
import java.awt.*;
import java.awt.event.WindowListener;
import javax.swing.*;
import java.io.*;
public class Test extends JFrame{
public static void main (String argv [])
{
new Test("Window Application");
}
public Test(String title)
{
super(title);
setSize(200, 100);
addWindowListener((WindowListener) new WindowDestroyer());
setVisible(true);
}
private class WindowDestroyer extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
}
当我尝试执行javac Test.java时,得到2个找不到符号错误。
私有类WindowDestroyer扩展了WindowAdapter
public void windowClosing(WindowEvent e)
答案 0 :(得分:0)
在Java 8 docs for WindowAdapter
中,它被定义为java.awt.event.WindowAdapter
。
您需要先导入该类:
import java.awt.event.WindowAdapter;
除了您的其他进口商品。
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowListener;
作为旁注,您可能会想这样做
import java.awt.event.*;
避免以后出现类似的导入错误。
我建议您阅读Why is using a wild card with a Java import statement bad?上的讨论,以了解这样做的利弊。
答案 1 :(得分:0)
我可以看到,您创建了简单的Swing应用程序窗口并关闭了它的关闭窗口。您以错误的方式进行操作。最好使用setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE)
(仅当您不打算做特殊的东西时才使用)。并使用SwingUtilities.invokeLater()
在AWT事件分配线程上异步执行:
public class Test extends JFrame {
public static void main(String... ars) {
SwingUtilities.invokeLater(() -> new Test().setVisible(true));
}
public Test() {
super("Window Application");
setSize(200, 100);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
}