jtextfield在关闭jdialog

时间:2016-06-19 12:41:09

标签: java swing jdialog gui-builder

我是Java和Swing的新手。我创建了一个jframe,并在其中添加了菜单栏和MenuItem。

单击菜单项时,应打开jdialog。现在jdialog中有一个jtextfield和一个jlabel。现在我的问题是,当第一次打开对话框时,文本字段为空,这是正确的。现在我关闭jdialog并再次打开它,但现在不是在jdialog中获取空文本字段,而是获取之前输入的数据'这不是jdialogs默认关闭操作所应该发生的事情'财产被设置为“处置”。但这不会发生在我身上......

我不知道自己做错了什么。我之前从未尝试过applet / swing(以此作为我的第一个演示学习程序)

Image 第二张图片

Second Image here

1 个答案:

答案 0 :(得分:0)

JTextField保留了它的值,因为它不受JDialog关闭的影响,而是被隐藏,因为它的父级(JDialog)是不可见的

将对话框设置为dispose不会重新初始化子组件,因此它们会保留其值。有关此行为的一些其他信息,请访问:

您可以阻止/控制此方法的一种方法是通过添加WindowEvent并在windowClosing()方法

Netbeans gui-builder将为您生成以下内容:

  • 右键单击对话框
    • 活动
      • 窗口
        • 的windowClosing

提供了:

private void jDialog1WindowClosing(java.awt.event.WindowEvent evt) {                                       
    // TODO add your handling code here:
} 

您可以在其中添加:textfield.setText("");以清除文本字段

另一种方法是创建自己的对话框并在构造函数中设置组件。由于创建新实例将包含具有默认值的组件,因此可以有效地重置它