- ベストアンサー
コマンドプロンプトのような画面を作る(Java:TextArea)
Java初心者です。 Javaでコマンドプロンプトのようなものを作っています。 文字を入力でき、Enterを押すと、処理をするものです。 TextAreaを使えばできると思ったのですが、 手持ちの本に、TextAreaはリターンキーを押してもActionEventが発生しないと書いてあり、できそうにありません。 どのような方法があるのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
\nも少しひっかかりますが、while (true){} で回すことも と言う感じです。これは私の感覚からということなので 無視されても構わないのですが・・・ 動くだけのプログラムというのならいいと思います。 ただプログラム事体はそれほど長いプログラムではなさそうなので 練習ついでに、addKeyListenerつけたものも試してみては?Enterキーを入れたときの振る舞いを書いてやればいいだけですから・・・ あと一つ加えるとsetDefaultCloseOperation(this.EXIT_ON_CLOSE); は一度やっておけばいいのでループの外に出しましょう。 一度ですむものはループの外に持って来たほうがいいです。 というよりも癖をつけたほうがいいかもしれません。ただ、 それで可読性がさがるならやらなくてもいいです。
その他の回答 (1)
- jikankou
- ベストアンサー率38% (42/108)
私はTextAreaは、使ったことがないのでなんともいえませんが、Componentを継承しているので、addKeyListenerを使えばいいでしょう。下のリンクにサンプルプログラムがあるので参照してみてください。 後は、TextAreaを使うのであれば、どんなメソッドが使えるのかAPIを ざっと目を通したほうがいいと思います。そうするといろいろな使い方 が覚えられていいのではないでしょうか?
補足
回答ありがとうございます。 進展があったので、補足に追加します。 以下のように、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 --------------------------------------------------------
お礼
addKeyListenerを使って動きました。 てこずりましたけど。 こっちの方がいいと思います。