将代码附加到方法

时间:2015-07-26 13:03:32

标签: java swing events

我是初学者,并不熟悉Java,所以解决方案可能很简单。

我有一个包含main方法的MainClass。这个MainClass创建一个JFrame,里面可以有各种JPanel。我有一个名为CommandInput的类,它创建一个包含JTextArea的JPanel。现在我希望当用户关闭MainClass的JFrame时,它会询问是否要保存更改。由于JFrame中的JPanels各不相同,我真的不想在MainClass中包含它。我知道像CommandInput这样的每个“SubClass”都可以将windowListener添加到MainClass的JFrame中,但这对我来说似乎并不高效:

public class CommandInput {
    public CommandInput(JFrame mainFrame) {
        mainFrame.addWindowListener(new java.awt.event.WindowAdapter() {
            @Override //Overwrites the normal behavior of this method
            public void windowClosing(java.awt.event.WindowEvent windowEvent) {
                System.out.println("Closing Event triggered and detected by CommandInput object");
            }
        });
    }
}

我是否应该在MainClass中使用一个WindowAdapter并将此代码添加到其windowClosing方法中?如果是这样,我该怎么做?

1 个答案:

答案 0 :(得分:0)

可能你需要这个

addWindowListener(new WindowAdapter(){
                public void windowClosing(WindowEvent e){
                int choice = JOptionPane.showConfirmDialog(null, "Save changes?");
                if(choice==0) System.exit(0);
                }
});