7

我有一个JDialog来自用户的名字。后面JDialog是一个小程序。我不希望用户在输入名称之前访问该小程序。我试过JDialog.setAlwaysOnTop(true)了,但是小程序抛出了一个AccessException错误。所以我所做的是保持一个while循环,JDialog.setVisible(true)直到JtextField(用户名的输入)为空(“”)。但是由于某种原因,这真的很慢,这意味着JDialog 负载,但是需要时间来专注于JTextField,即使用户输入他的名字,它也真的很慢......就像一个字符在 2 秒内......还有其他的吗让我强制用户在访问小程序之前输入名称的方法?

4

3 回答 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 回答