1

私のタイトルはやや不可解ですが、明確なものを思いつくことができませんでした.

まず、参照ポイントを確立するための 2 つのコード スニペットです (タイプミスがないことを願っています)。

で入力Scanner

'''
Scanner sc = new Scanner(System.in);
for (int i=0; i<10; ++ i)  {
  System.out.print("Please input a value:");
  String answer = sc.next();
  // do something with this string
}  
...

で入力JOptionPane

...
for (int i=0; i<10; ++ i) {
   String answer = JOptionPane.showInputDialog("Please input a value");
   // do something with this string
{

そのため、上記のサンプルでは、​​一定の回数だけ値を入力するようユーザーに求めています。同じ種類の機能をSwingアプリケーションに実装するにはどうすればよいですか?

(コンテンツ ペインとして) を作成し、このパネルに (プロンプトを使用して) and を追加しJFrameても問題はありません。テキスト フィールドに対して、値を取得して処理するメソッドを作成することもできます。文字列処理は長時間実行されるタスクではないため、別のワーカー スレッドが必要になるとは思いません。JPanelJLabelJTextFieldActionListenerActionPerformed

ユーザーに何かを強制することはできないのでjavax.swing.Timer、タイムリーな応答を確保するために使用する予定です。

私が理解していないのは、ループまたはその他の形式の制御を実装して、ユーザーが値を正確な回数入力する (およびプログラムが取得する) ことを保証する方法です。このようなロジックをイベント駆動型システムに挿入するにはどうすればよいですか?

GUI パーツをセットアップし、そのインスタンスを送信して EDT で呼び出すと、すべての制御を放棄しているように見えます。

最初にテキスト フィールドを にsetEditable設定して送信し、次に編集を有効にする(そして編集を無効に戻す)falseループを作成しますか?invokeAndWaitRunnableActionPerformed

私を正しい方向に向けてください。

4

1 に答える 1

5

まあ、それはあなたがそれをどのように達成したいかによって異なります...

あなたは出来る...

必要な数のフィールド (この例では 10) と を指定してJButton、すべてのフィールドが入力されるまでボタンをクリックすると、ユーザーにメッセージが表示され、無効なフィールドに再び焦点が当てられるようになります...

あなたは出来る...

ユーザーに単一のフィールド (およびラベル) とボタンを提供します。フィールドに入力するまで、ボタンを押すとプロンプトが表示され、フィールドが再度フォーカスされます。

ユーザーが必要な情報を入力してボタンをクリックすると、カウンターがインクリメントされ、フィールドがリセットされ、カウンターが制限に達するまで続行されます...

あなたは出来る...

1 つの列と 5 つの行しかないa を使用しJTableます...これは、最初のソリューションに対する単純化された (視点に応じて) ソリューションです...

于 2014-02-27T03:03:56.600 に答える