我在Swing应用程序中使用了一些JTextArea
。已使用JScrollPane
经理将已包围的JPanel
添加到GridBagLayout
。
// Pseudo Code ----
JTextArea area = new JTextArea();
area.setRows(3);
JScrollPane sp = new JScrollPane(area);
JPanel p = new JPanel(new GridBagLayout());
p.add(sp, new GridBagConstraints(
0, 0, 1, 1, 1, 0, WEST, HORIZONTAL, new Insets(4, 4, 4, 4), 0, 0));
// ----------------
一切正常。在我调整JFrame
的大小之前,完全没问题。然后 JTextArea
将折叠为一行。但是至少有一个地方有足够的地方。
为什么元素会崩溃到一行? 有谁知道解决方案?有人有想法吗?
答案 0 :(得分:2)
我相信这是因为你将你的权重设置为0(GridBagConstraints构造函数的第6个参数)。如果您希望组件垂直增长,则需要增加此值。
答案 1 :(得分:2)
还要确保在滚动窗格上设置“首选尺寸”属性。当没有设置此属性时,框架和面板调整大小时,我有奇怪的行为(窗格/字段折叠/消失)。
答案 2 :(得分:0)
如果我在元素周围使用BorderLayout
,它就可以了
Pete,MrWiggles,谢谢你的帮助!!
答案 3 :(得分:0)
我最近遇到了类似的问题,我有两个不同的GridBagConstraint.weighty值的JTextAreas,两者都设置为GridBagConstraint.fill = BOTH。当我改变JTextAreas中的文本时,它们会改变大小(如果设置了权重和填充值,我预计不会发生这种情况)。奇怪的是,我所要做的就是为包围JTexAreas的JScrollPanes设置一个首选大小。首选尺寸尺寸可以是任何尺寸,因为“fill = BOTH”导致首选尺寸被忽略,但它确实解决了我的问题。