我想在GridBagLayout中减小JTextField和JScrollPane的宽度和高度,但似乎宽度只能通过设置文本字段列从JList减少到最长内容的长度。我不确定是否需要调整组件的大小或其中一个大小以匹配宽度。
我已经尝试了setPreferredSize(),setSize(),并在文本字段上设置列长度,但它们似乎没有做任何事情。
GridBagConstraints c = new GridBagConstraints();
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 0;
c.gridy = 0;
fontDialog.add(fontLabel, c);
c.gridx = 1;
fontDialog.add(styleLabel,c);
c.gridx = 2;
fontDialog.add(sizeLabel, c);
c.gridx = 0;
c.gridy = 1;
fontDialog.add(fontTextField, c);
c.gridx = 1;
fontDialog.add(styleTextField, c);
c.gridx = 2;
fontDialog.add(sizeTextField, c);
c.gridx = 0;
c.gridy = 2;
fontDialog.add(new JScrollPane(fontList), c);
c.gridx = 1;
fontDialog.add(new JScrollPane(styleList), c);
c.gridx = 2;
fontDialog.add(new JScrollPane(sizeList), c);
fontDialog.pack();
当添加到GridBagLayout中的单元格时,组件以其首选大小显示。
c.fill = GridBagConstraints.HORIZONTAL;
您正在使用水平填充,它告诉布局将所有组件的宽度填充到列中的最大宽度,从而覆盖首选大小。
如果您不希望文本字段的宽度增加,那么请删除该约束。
然后,当您创建文本字段时,您使用:
JTextField textField = new JTextField(10);
该数字将允许文本字段确定其自己的首选大小以容纳10“W”字符。
您必须设置列的最小和首选大小才能控制大小。覆盖它们是你想要的。