无法在GridBagLayout中调整JTextField和JScrollPane的大小

问题描述 投票:0回答:2

我想在GridBagLayout中减小JTextField和JScrollPane的宽度和高度,但似乎宽度只能通过设置文本字段列从JList减少到最长内容的长度。我不确定是否需要调整组件的大小或其中一个大小以匹配宽度。

我已经尝试了setPreferredSize(),setSize(),并在文本字段上设置列长度,但它们似乎没有做任何事情。

enter image description here

    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();
java swing jtextfield jscrollpane gridbaglayout
2个回答
1
投票

当添加到GridBagLayout中的单元格时,组件以其首选大小显示。

c.fill = GridBagConstraints.HORIZONTAL;

您正在使用水平填充,它告诉布局将所有组件的宽度填充到列中的最大宽度,从而覆盖首选大小。

如果您不希望文本字段的宽度增加,那么请删除该约束。

然后,当您创建文本字段时,您使用:

JTextField textField = new JTextField(10);

该数字将允许文本字段确定其自己的首选大小以容纳10“W”字符。


0
投票

您必须设置列的最小和首选大小才能控制大小。覆盖它们是你想要的。

© www.soinside.com 2019 - 2024. All rights reserved.