如何创建或为temp(WindowAdapter)分配方法?

时间:2014-06-04 21:11:03

标签: java

我想创建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

1 个答案:

答案 0 :(得分:1)

也许是这样的?

WindowAdapter temp = new WindowAdapter() {
    @Override
    public void windowClosing(WindowEvent e) {
        System.exit(0);
    }
};

f.addWindowListener(temp);

修改

关于该测试方法。你不能用匿名类做到这一点(可以使用acctualy,但只能使用反射,这并不漂亮)。因为这不是匿名类的用途。

匿名类可以方便地实现接口,扩展抽象类甚至非抽象类。例如,如果您的HelloWorldPrinter类/接口有test()方法,那么您的代码编译正常,t.test()会在您的匿名类中调用您的方法。