在actionPerformed-method中关闭JFrame(JFrame是私有静态void createGUI())

时间:2015-04-20 08:02:57

标签: java swing jframe

我已经从oracle-example复制了我的大部分代码,所以我认为至少我没有添加的代码应该是正确的,我不想改变它。但是在oracle代码中我无法实现这一行来正确关闭我的JFrame:frame.dispatchEvent(new WindowEvent(frame, WindowEvent.WINDOW_CLOSING));

private static void createGUI() {
        JFrame frame = new JFrame("NameChooser");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        ...
}

public static void main(String[] args) {
    javax.swing.SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            createGUI();
        }
    });
}

public void actionPerformed(ActionEvent e) {        
    if (e.getSource()==skipButton){
        frame.dispatchEvent(new WindowEvent(frame, WindowEvent.WINDOW_CLOSING)); WindowEvent.WINDOW_CLOSING)); // does not work ofc
    }
}

如何在不破坏打开JFrame的正确方法的情况下关闭actionPerformed方法中的JFrame?

或者这个oracle代码是否适用于示例而不适用于实际应用程序?

1 个答案:

答案 0 :(得分:0)

你应该frame这样的实例字段:

private static JFrame frame;

private static void createGUI()
{
    frame = new JFrame( "NameChooser" );
    ...
}