我是Java和Swing的新手。我创建了一个jframe,并在其中添加了菜单栏和MenuItem。
单击菜单项时,应打开jdialog。现在jdialog中有一个jtextfield和一个jlabel。现在我的问题是,当第一次打开对话框时,文本字段为空,这是正确的。现在我关闭jdialog并再次打开它,但现在不是在jdialog中获取空文本字段,而是获取之前输入的数据'这不是jdialogs默认关闭操作所应该发生的事情'财产被设置为“处置”。但这不会发生在我身上......
我不知道自己做错了什么。我之前从未尝试过applet / swing(以此作为我的第一个演示学习程序)
答案 0 :(得分:0)
JTextField
保留了它的值,因为它不受JDialog
关闭的影响,而是被隐藏,因为它的父级(JDialog
)是不可见的
将对话框设置为dispose不会重新初始化子组件,因此它们会保留其值。有关此行为的一些其他信息,请访问:
您可以阻止/控制此方法的一种方法是通过添加WindowEvent
并在windowClosing()
方法
Netbeans gui-builder将为您生成以下内容:
提供了:
private void jDialog1WindowClosing(java.awt.event.WindowEvent evt) {
// TODO add your handling code here:
}
您可以在其中添加:textfield.setText("");
以清除文本字段
另一种方法是创建自己的对话框并在构造函数中设置组件。由于创建新实例将包含具有默认值的组件,因此可以有效地重置它