繁体   English   中英

将可滚动的jpanel添加到gridlayout

[英]add a scrollable jpanel to a gridlayout

我正在建立一个充满标签的网格。 其中之一包含html文本,应将其大小调整为最大格式并可以滚动。 我找到了添加JScrollPane的方法,但是它保持一行高度,即使给它400x400的大小,我也找不到如何调整它的大小...

删除getViewport()会得到相同的结果。

JPanel grid = new JPanel(new GridLayout(1,2));

// first cell of the grid
grid.add(new JLabel("title"));

// second cell of the grid, this should be the scrollable one   
JScrollPane scroll = new JScrollPane();
scroll.getViewport().setSize(400, 400);
scroll.getViewport().add(new JLabel("<html>long<br>html<br>text</html>"));
grid.add(scrollVersion, BorderLayout.CENTER);   

有任何想法吗 ?

非常感谢 ...

GridLayout不遵守其布局组件的首选大小。 它旨在使所有网格单元具有相同的大小。 一种替代方法是使用GridBagLayout,但是我个人会推荐ZoneLayout ,它(在我看来)更简单,同样强大且更加直观。 使用备忘单,您不会出错。

另外,BorderLayout.CENTER是用于BorderLayout的约束,与GridLayout不兼容。 将组件添加到GridLayout的所有者时,无需提供约束。 使用GridLayout从左上角的单元格开始,从左到右添加组件。

将您的GridLayout替换为GridBagLayout 有了正确的约束集,它应该像魅力一样工作。 显然,请看一些示例 ,因为GridBagLayout看起来很复杂,但是对于一些示例来说却很简单。

GridLayout的所有单元格都设计为具有相同的大小,因此,如果您希望一个单元格大于整个单元格,则必须使用另一个LayoutManager,例如Riduel建议的GridBagLayout。

另外,如果您的JLabel将有多行,我建议您将其替换为不可编辑的JTextPane或JTextArea

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM