我有一个JDialog
来自用户的名字。后面JDialog
是一个小程序。我不希望用户在输入名称之前访问该小程序。我试过JDialog.setAlwaysOnTop(true)
了,但是小程序抛出了一个AccessException
错误。所以我所做的是保持一个while循环,JDialog.setVisible(true)
直到JtextField
(用户名的输入)为空(“”)。但是由于某种原因,这真的很慢,这意味着JDialog
负载,但是需要时间来专注于JTextField
,即使用户输入他的名字,它也真的很慢......就像一个字符在 2 秒内......还有其他的吗让我强制用户在访问小程序之前输入名称的方法?
问问题
15929 次
3 回答
12
使用模态 JDialog。例如,JApplet 的 init(...) 方法中的代码可能包括:
JDialog dialog = new JDialog(SwingUtilities.windowForComponent(this));
dialog.setModal(true);
dialog.setSize(...);
dialog.setVisible( true );
或者您可以只使用 JOptionPane.showInputDialog()。同样,您只需将“this”指定为选项窗格的父组件。
于 2010-04-13T19:31:35.860 回答
3
另一种选择是:
frame.setAlwaysOnTop(true);
它强制对话框在任何其他之上。
于 2014-04-06T20:19:02.657 回答
0
它运行缓慢,因为程序正在处理该 foo 循环
您可以做的是添加一个窗口侦听器,然后 jdialog 失去它的焦点(或小程序获得它)将焦点返回给 jdialog。
这应该比您现在使用的 for 循环执行得更好
于 2010-04-13T18:17:31.293 回答