7

JDialogユーザーから名前を取得する があります。の後ろはJDialogアプレットです。ユーザーが名前を入力するまで、そのアプレットにアクセスしたくありません。を試しJDialog.setAlwaysOnTop(true)ましたが、アプレットがAccessExceptionエラーをスローします。だから私がしたことは、 (ユーザー名の入力) が空 ("")になるJDialog.setVisible(true)まで実行される while ループを維持することでした。JtextFieldしかし、何らかの理由で、これは非常に遅く動作します。つまり、JDialog 負荷がかかりますが、集中するのに時間がかかりJTextField、ユーザーが自分の名前を入力しても、非常に遅くなります... 2 秒で 1 文字のように... 他に何かありますか?アプレットにアクセスする前にユーザーに名前の入力を強制する方法はありますか?

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 に答える