-2

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

单击菜单项时,应打开一个 jdialog。现在jdialog 中有一个jtextfield 和一个jlabel。现在对我来说问题是'当第一次打开对话框时,文本字段是空的,这是正确的。现在我关闭了 jdialog 并再次打开它,但现在我没有在 jdialog 中获得一个空的文本字段,而是获得了之前输入的数据,这不是应该发生的,因为 jdialogs 的“默认关闭操作”属性设置为“dispose”。但这对我来说并没有发生......

我不知道我做错了什么。我以前从未以任何其他方式尝试过 applet/swing(将其视为我的第一个演示学习程序)

图片 第二张图在这里

第二张图在这里

4

1 回答 1

0

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

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


防止/控制这种情况的一种方法是通过在方法中添加 aWindowEvent并提供必要的功能来“通知”对话框在关闭文本字段时擦除它windowClosing()

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

  • 右键单击对话框
    • 活动
      • 窗户
        • 窗口关闭

提供:

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

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


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

于 2016-06-20T23:19:46.550 回答