我想创建WindowAdapter
的实例并将windowClosing
的方法放入其中,然后将温度发送到f.addWindowListener(temp)
即可。
Java不允许我创建WindowAdapter
的实例,如下所示。
WindowAdapter temp = new WindowAdapter(); <-- Does not compile
怎么可以这样做?
代码:
public static void main(String args[]) {
setLookFeel();
JFrame f = new JFrame("Hello World Printer...");
WindowAdapter temp;
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
JButton printButton = new JButton("Print Hello World");
printButton.addActionListener(new HelloWorldPrinter());
f.add("Center", printButton);
f.pack();
f.setVisible(true);
}
这可以,但我怎么能使用Test()方法。
HelloWorldPrinter t = new HelloWorldPrinter() {
public void test() {
System.out.println("Test");
}
};
t.test(); <-- gives a compile error
答案 0 :(得分:1)
也许是这样的?
WindowAdapter temp = new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
};
f.addWindowListener(temp);
修改强>
关于该测试方法。你不能用匿名类做到这一点(可以使用acctualy,但只能使用反射,这并不漂亮)。因为这不是匿名类的用途。
匿名类可以方便地实现接口,扩展抽象类甚至非抽象类。例如,如果您的HelloWorldPrinter
类/接口有test()
方法,那么您的代码编译正常,t.test()
会在您的匿名类中调用您的方法。