为什么Swing formWindowClosed没有正常工作?

时间:2013-02-03 11:36:40

标签: java swing netbeans

我有一个SWING表单,当我关闭应用程序时,我想将数据保存到文本文件中。

这是由Swing生成的代码,我无法修改:

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    addWindowListener(new java.awt.event.WindowAdapter()
    {
        public void windowClosed(java.awt.event.WindowEvent evt)
        {
            formWindowClosed(evt);
        }
    });

这是我formWindowClosed的自定义实现。问题是app在没有执行formWindowClosed的情况下关闭。

不是formWindowClosed我想在应用程序关闭之前放置执行代码的方法吗?

formWindoClosed实施:

private void formWindowClosed(java.awt.event.WindowEvent evt)
{

    System.out.println("Message");
    brain.getBirou().getProbaRepo().WriteParticipantToTXT();
}

2 个答案:

答案 0 :(得分:4)

如果要在进程退出之前执行代码,则必须将默认关闭操作设置为WindowConstants.DISPOSE_ON_CLOSE,然后在侦听器方法中保存文件,然后在完成后调用System.exit(0);
此外,“Swing”本身不会生成代码。也许您应该亲自为自己编写GUI代码。那么你当然可以修改任何东西 您必须能够更改窗口的退出行为,因此将其设置为关闭时应该有所帮助。也许您应该在IDE中查找可以更改它的位置。 (或者只是用文本编辑器打开它......)

答案 1 :(得分:0)

您可以改用formWindowClosing。

要通过Netbeans IDE GUI Builder执行此操作: 转到设计视图,然后在导航器窗口中右键单击[JFrame]。转到事件,然后选择要添加的事件。

请记住在defaultCloseOperation属性中将框架标记为DO_NOTHING_ON_CLOSE。