- - PR -
JScrollPaneとJTabbedPaneについて
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-03-06 16:18
お世話になります。
掲題の件で、私には理解できないことが起きたので、どなたかご教授ください。 まず、10行のJTextAreaに3行表示指定のJScrollPaneを付与してJDialogにaddすると 見た目は3行で、スクロールで10行まで表示できるオブジェクトが作成されます。 この後に、JTabbedPaneをJDialogに追加すると、なぜかJTextAreaのViewが無効(?)になり JTextAreaが見た目10行で表示されてしまいます。 これはなぜでしょうか? Javaの環境はJ2SDK1.4.2_10です。 以下、参考ソースです。 /***********************************************************************/ // スクロールパネルを生成 JScrollPane jspanel; // テキストエリア JTextArea jtarea = new ComAreaControl(LINE_10, SIZE_60); // Enable設定 jtarea.setEnabled(false); // スクロールパネルにラベルを追加 jspanel = new JScrollPane( jtarea ); // 注意喚起 // 背景を白に設定 jspanel.getViewport().setOpaque( true ); jspanel.getViewport().setBackground( jtarea.getBackground() ); /* ViewPortのサイズ設定 */ // JTextAreaのサイズを取得 Dimension dim = comAKanki.getPreferredScrollableViewportSize(); // 横サイズ指定 スクロールバー分のサイズを足す dim.width = dim.width + SIZE_20; // 縦サイズ指定 3行分の表示(3行分ぴったりだと窮屈なので+5している) dim.height = dim.height / LINE_10 * LINE_3 + SIZE_5; // パネルのサイズ補正 jspanel.setPreferredSize( dim ); JTabbedPane j_tab = new JTabbedPane( SwingConstants.TOP, JTabbedPane.SCROLL_TAB_LAYOUT ); /*タブの中身を作成する処理(略)*/ /*※タブの中身を作成する処理があってもなくても現象変わらず*/ // BorderLayoutでもGridBagLayoutでも現象は同じでした getContentPane().setLayout( new BorderLayout() ); getContentPane().add(jspanel); getContentPane().add(jtab); /***********************************************************************/ 以上、よろしくお願い致します。 _________________ | ||||
|
投稿日時: 2006-03-06 18:09
ComAreaControl ってクラスは独自のクラスでしょうか?
貼り付けたコードには JDialog が登場しないようですが、JFrame 等でも再現するのでしょうか? | ||||
|
投稿日時: 2006-03-06 19:30
インギさん
お返事ありがとうございます。m(__)m すみません、自己解決しました。 どうやらダイアログのサイズが小さかったみたいです。 swingってちょっとしたことで画面レイアウトがぐちゃぐちゃになりますね。^^; 初歩的なことと思いますが、勉強になりました。 どうもありがとうございました。m(__)m | ||||
|
投稿日時: 2006-03-08 09:32
間違わなければ、ぐちゃぐちゃにはなりませんよ。 | ||||
|
投稿日時: 2006-03-08 11:07
それは単に作り方が悪いだけですね。 レイアウトについて勉強してみましょう。 |
1