首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JList太宽了?

JList太宽了?
EN

Stack Overflow用户
提问于 2012-08-18 05:58:10
回答 1查看 399关注 0票数 0

我正在尝试将JList添加到我的布局(2列布局)。添加时,它会使其整个列占据父JFrame的整个宽度:

代码语言:javascript
复制
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中,现在也可以工作了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-18 07:51:33

在布局中添加胶水。胶水将占用组件未使用的面板宽度的其余部分。因此,将这行代码放在您想要占据面板中其余空间的位置:

代码语言:javascript
复制
h.add(Box.createHorizontalGlue());

此外,正如问题的注释中所指出的,使用BoxLayout不需要任何定位信息。因此,您可以简单地使用以下命令:

h.add(someOtherPanel);

而不是这样:

h.add(someOtherPanel, BorderLayout.WEST);

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12013709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档