JList を自分のレイアウト (2 列のレイアウト) に追加しようとしています。追加すると、列全体が親 JFrame の幅全体を占有します。
LwjglCanvas c = new LwjglCanvas(blah);
c.getCanvas().setMaximumSize(new Dimension(480, 800)); // explicit width
Box h = Box.createHorizontalBox();
h.add(c.getCanvas());
Box v = Box.createVerticalBox();
h.add(v);
JList list = new JList(mDefaultListModel); // plz use remainder width
v.add(list);
JFrame frame = new JFrame();
frame.setMinimumSize(new Dimension(800, 800));
frame.add(h);
frame.pack();
frame.setVisible(true);
したがって、JList を追加すると、右側の列が JFrame の全幅に拡張されます。JList を JScrollPane にラップしようとしましたが、作成時にハングしているようで、レイアウトが完了しません。
これを行う正しい方法は何ですか?
ありがとう
- - - アップデート - - - - - - -
JList に一連の String インスタンスをデータとして与えています。弦はたまたまかなり長いです。JList は、他のすべてのレイアウト パラメータを無視して、レンダリングする必要がある最長の文字列と同じ幅になっているようです。理想的には、必要な最大幅まで拡大するのではなく、水平方向にスクロールするだけです。
- - - アップデート - - - - - - -
最後に、何が起こっているのかを理解しました。JFrame のサイズを指定すると、この動作が発生しているようです。その行を削除するとすぐに、JList は期待どおりにレンダリングを開始しました。JScrollPane にラップされ、現在も動作します。