我正在尝试将 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 中,现在也可以使用。