0

私は Java にかなり慣れていないので、JTextField 用の 'BufferedReader' を作成する必要があります。必要なのは、プログラムがメソッドを呼び出すときにgetText()、Enter キー イベント ハンドラーからの入力を受け取るまで待機する必要があることです。私が次のようなことをした場合:

String input = null;
while(true) {
  if(!input.equals(null)) {
    break;
  }
}

nullpointerexception エラーが発生します。私はそれについて考え、それgetText()を呼び出したメソッドにデータを返す必要があるため、メソッド内でネストされたメソッドのようgetText()に実行する必要があると判断しました。これにより、コードを実行してデータを実行できます。何か案は?

4

3 に答える 3

2

これは、Swing (またはほぼすべての UI フレームワーク) が機能する方法ではありません。Event Dispatching Thread を決してブロックしてはならない理由については、Swingでの同時実行を確認することから始めます...

Swing はイベント駆動型の環境です。ユーザーがマウスをクリックすると、イベントが発生します。ユーザーがキーを押すと、イベントが発生します。

ループやポーリングを使用するのではなく、Swing はObserver パターンの一種である「リスナー」を利用します。

これにより、コールバック インターフェイスをオブジェクトにアタッチでき、何かが発生したときに通知されます。

その他の例については、 Writing Event Listenersを参照してください。

ユーザーがいつ を押したかを知る必要がある場合は、を にEnter添付する必要があります。ユーザーが押すたびにイベントをトリガーしますActionListenerJTextFieldactionPerformedEnter

詳細については、アクション リスナーの作成方法を参照してください。

于 2013-09-20T01:24:36.090 に答える
0

入力が null であるためです。

String input = null;
if(!input.equals(null))

"null"「初期化されていないか、値がありません」を意味します。equals メソッド (および他のすべてのメソッド) では、入力が null でないことが必要です。

于 2013-09-20T01:23:26.700 に答える