gpt4 book ai didi

java - 在 panel.setInvisible 之后设置 JTextField 值不会更新值

转载 作者:行者123 更新时间:2023-11-30 07:33:59 25 4
gpt4 key购买 nike

我注意到一种我无法解释的行为。在我的 GUI 中,单击按钮后,我会显示一个自定义 Jdialog,其中包含面板和一堆文本字段。我填充这些文本字段。

这是我使用伪代码看到的场景。

public void actionPerformed(ActionEvent e) {
CustomDialog viewDialog = new CustomDialog (Jframe, true);
viewDialog.setVisible(true);
viewDialog.populateInfo();
}

当上面的代码运行时,所有文本字段都是空的。但是,如果我将 setVisible 移到 populateInfo 方法之后,则所有文本字段都会被填充。基本上,如果 setVisible 发生在之前,填充信息中的 JTextField.setText 似乎不会产生影响

这是为什么!

最佳答案

您的 CustomDialog 类可能是一个 modal JDialog(也如 true 第二个构造函数参数所建议的那样) 。如果是这样,那么调用代码中的程序流将被 setVisible(true) 调用阻止,因此您的 populateInfo() 方法只会在对话框消失后才会被调用。更长久可见。解决方案正如您已经知道的那样——在显示对话框之前调用该方法。

这不是一个错误,而是一个功能。 :)
说真的,因为现在您知道程序代码流何时将停止以及何时恢复,因此您可以在调用 setVisible(true) 后安全地查询对话框的状态,并确信至少对话框已呈现给用户,并且用户有时间与其交互并处理它。

关于java - 在 panel.setInvisible 之后设置 JTextField 值不会更新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35671003/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com