JTextArea在调整JFrame大小时有奇怪的行为

时间:2009-04-15 07:21:46

标签: java user-interface swing

我在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将折叠为一行。但是至少有一个地方有足够的地方。

为什么元素会崩溃到一行? 有谁知道解决方案?有人有想法吗?

4 个答案:

答案 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”导致首选尺寸被忽略,但它确实解决了我的问题。