我有一个JDialog
来自用户的名字。 JDialog
后面是一个小程序。我不希望用户在输入名称之前访问该applet。我尝试了JDialog.setAlwaysOnTop(true)
,但applet引发了AccessException
错误。所以我所做的是保持一个执行JDialog.setVisible(true)
的while循环,直到JtextField
(用户名的输入)为空(“”)。但由于某种原因,这种方法效果很慢,意味着JDialog
加载,但是需要时间来关注JTextField
,即使用户输入他的名字,它也会非常慢......就像一个角色一样在2秒内......在访问applet之前,有没有其他方法可以强制用户输入名称?
答案 0 :(得分:10)
使用模态JDialog。例如,JApplet的init(...)方法中的代码可能包括:
JDialog dialog = new JDialog(SwingUtilities.windowForComponent(this));
dialog.setModal(true);
dialog.setSize(...);
dialog.setVisible( true );
或者您可以使用JOptionPane.showInputDialog()。再次,您只需将“this”指定为选项窗格的父组件。
答案 1 :(得分:1)
另一种选择是:
frame.setAlwaysOnTop(true);
它强制对话框在任何其他对话之上。
答案 2 :(得分:0)
它运行缓慢,因为程序正在处理foo循环
你可以做的是添加一个窗口监听器,然后jdialog丢失它的焦点(或小程序获得它)将焦点返回到jdialog。
这应该比你现在使用的for循环好得多