- 締切済み
JTextAreaの大きさの指定と固定について
今JTextAreaをJPanelに貼り付けてそれを更にJFrameに貼り付けるプログラムを書いています。 フレームはBorderLayoutにしており、WESTにもEASTにもパネルをaddしてます。 frame.add(createWestPanel(), BorderLayout.WEST); JPanel createWestPanel() { ・・・ return p; } の様な形です。 このパネルにJTextAreaを使用しており、 ボタンを押すとJTextAreaに文を表示する仕様にしたいのですが 大きさを指定しなければ表示する字数によって大きさが勝手に変更されてしまい(その様になるのは当たり前ですが)、他のコンポーネント(例えばBorderLayout.CENTERにあるボタンなど)と重なったりしてしまいます。 そこで、JTextAreaの大きさを指定した上で固定したいのですがどのようにすればよいでしょうか? また、 WestPanelを □□□ ボタン (JTextField) (JButton) JTextArea と言った形にしたいのですが、どうやってもJTextAreaがJButtonの右に来てしまいます。 これも解決方法を教えていただけると助かります。 お願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- komi1341
- ベストアンサー率65% (25/38)
#1です。 まずすみません、前回のは仰るとおり、DirectionではなくDimensionです。 ずいぶんなポカミスをしてしまいました。 おまけに、それでは問題が解決しないようですね。 しばらくJTextAreaを使っていなかったので、ためしにサンプルプログラムを作ってみたのですが、ようやく問題を理解できた気がします。 長い文字列を表示しようとすると横に、改行の多い文字列を表示しようとすると縦に、JTextAreaのサイズが大きくなってしまう、という意味でしょうか? もしそうなら、横方向は折り返しの設定で解決できます。JTextArea.setLineWrap()にtrueを設定してください。 縦方向についてはJScrollPaneを併用して、初期サイズでは表示しきれない文字列が設定されたときはスクロールバーを出して対処する、というのでいかがでしょうか。
- komi1341
- ベストアンサー率65% (25/38)
JTextAreaのコンストラクタで行数、列数を指定できますが、それでは駄目ですか? http://java.sun.com./javase/ja/6/docs/ja/api/javax/swing/JTextArea.html あとはJTextArea.setPreferredSize(new Direction(width, height)); を呼んでやるとか。 WestPanelについては、レイアウトをBorderLayoutにして、CENTERにJTextArea、NORTHにもう1つFlowLayoutのパネル、FlowLayoutのパネルにJTextFieldとJButtonを追加してやるのはどうでしょう。
お礼
ご回答ありがとうございます!! 行数、列数でやってもダメだったので今回質問させていただきました。 その補足がなかったですね、すいません。 一つ質問ですが、new Dimensionではないですか?? でも、おっしゃっていただいた方法でやるとほとんどの問題が解決しました! 後の問題は、上の質問がnew Dimensionだったと仮定して・・・。 それでやった場合、 ・Dimension(WIDTH, HEIGHT)のwidth heightどちらの値を変えても 領域の大きさが変わらないこと (極端な話数字指定してもしなくても同じ大きさです。) と言った問題点が出てしまいました。 いかほどでしょう??(ノД`)