• ベストアンサー

コマンドプロンプトのような画面を作る(Java:TextArea)

Java初心者です。 Javaでコマンドプロンプトのようなものを作っています。 文字を入力でき、Enterを押すと、処理をするものです。 TextAreaを使えばできると思ったのですが、 手持ちの本に、TextAreaはリターンキーを押してもActionEventが発生しないと書いてあり、できそうにありません。 どのような方法があるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • jikankou
  • ベストアンサー率38% (42/108)
回答No.2

\nも少しひっかかりますが、while (true){} で回すことも と言う感じです。これは私の感覚からということなので 無視されても構わないのですが・・・ 動くだけのプログラムというのならいいと思います。 ただプログラム事体はそれほど長いプログラムではなさそうなので 練習ついでに、addKeyListenerつけたものも試してみては?Enterキーを入れたときの振る舞いを書いてやればいいだけですから・・・ あと一つ加えるとsetDefaultCloseOperation(this.EXIT_ON_CLOSE); は一度やっておけばいいのでループの外に出しましょう。 一度ですむものはループの外に持って来たほうがいいです。 というよりも癖をつけたほうがいいかもしれません。ただ、 それで可読性がさがるならやらなくてもいいです。

westcity
質問者

お礼

addKeyListenerを使って動きました。 てこずりましたけど。 こっちの方がいいと思います。

その他の回答 (1)

  • jikankou
  • ベストアンサー率38% (42/108)
回答No.1

私はTextAreaは、使ったことがないのでなんともいえませんが、Componentを継承しているので、addKeyListenerを使えばいいでしょう。下のリンクにサンプルプログラムがあるので参照してみてください。 後は、TextAreaを使うのであれば、どんなメソッドが使えるのかAPIを ざっと目を通したほうがいいと思います。そうするといろいろな使い方 が覚えられていいのではないでしょうか?

参考URL:
http://homepage1.nifty.com/kodayan/java2/data01/apt050.html
westcity
質問者

補足

回答ありがとうございます。 進展があったので、補足に追加します。 以下のように、whileを無限ループさせて、"\n"の入力をチェックすることで、一応解決しましたが、 このようなwhile無限ループは、通常、プログラムとして好ましくないのでしょうか? -------------------------------------------------------- public SampleApp(){ this.setSize(300,200); this.setTitle("Sample"); //TextAreaを作成 TextArea textArea = new TextArea("Sample>"); this.add(textArea); this.setVisible(true); while(true) { //プログラム終了処理(xクリック時) setDefaultCloseOperation(this.EXIT_ON_CLOSE); if(textArea.getText().endsWith("\n")) { textArea.append("Sample>"); }//end if }//end while --------------------------------------------------------

関連するQ&A