2012-03-16 4 views
3

私は、このプログラムを使って、telnetまたはSSH(ユーザーがどの接続タイプを選択できるか)を介してリモートサーバーに接続し、出力をコンソールに表示しています(デフォルトはSystem.out)。複数の出力文字列をJTextFieldからコンソールにコピーしようとしています

コンソールに書き込まれていた内容をJTextFieldに書き出すコードを書きました。

私が次にやりたかったのは、ユーザがJTextAreaを通して自分のコマンドを入力することができるようにすることでした。そして、彼らが入力したコードがいつでも送信されるようにしました。

自分のデバッグ目的のために、正しいデータを送信していることを確認するために、最初にユーザー入力をコンソールに出力したかったのです。私はここにこの小さなコードスニペットを持って

..

// jtxt is a JTextField i defined earler in code 
// and the variable J is a String. 

jtxt.addKeyListener(new KeyAdapter() { 
    public void keyTyped(KeyEvent ke) { 
     if (ke.getKeyChar() == ke.VK_ENTER) { 

      j = jtxt.getText(); 
      System.out.println(j); 
     } 
    } 
}); 

私が午前唯一の問題は、私はそれをプリントアウトしwhenver私と私のJTextAreaには、テキスト「管理者」そうstring j = "admin"があったが、これをテストしています画面には、 "admin"という言葉の百万のように印刷されます。何か案は?ところで、addKeyListenerの近くでもループはありません。

+1

この質問は、最近質問され、ここで回答しました:[コンソールの代わりにJTextAreaのデータを表示](http://stackoverflow.com/questions/9680318/show-data-コンソールの代わりにon-a-jtextarea/9680496#9680496)。 – aioobe

+2

デバッガはあなたの親友です! printlnの上にブレークポイントを置き、何が起こっているかを確認してください。一つのことは確かですが、コードは常に(あるいは最も普通に)正しいです。 –

+3

1)[アクションリスナーを追加](http://docs.oracle.com/javase/7/docs/api/javax/swing/JTextField.html#addActionListener%28java.awt.event.ActionListener%29)このための「KeyListener」 2)あなたは確かですか?* "万" *は実際には5ではありませんか? 3)すぐにより良い助けを得るために、[SSCCE](http://sscce.org/)を投稿してください。 –

答えて

0

問題は、ユーザーがEnterキーを長押ししていることです。現在のキーが押されている間、あなたのコンピュータはkeyTyped()を再確認しています。メソッド名をkeyTypedからkeyReleasedに変更します。それはあなたのエラーを修正するはずです。

関連する問題