代码之家  ›  专栏  ›  技术社区  ›  6rchid

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

  •  0
  • 6rchid  · 技术社区  · 7 年前

    我想减少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();
    
    2 回复  |  直到 7 年前
        1
  •  1
  •   camickr    7 年前

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

    c.fill = GridBagConstraints.HORIZONTAL;
    

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

    如果您不希望文本字段的宽度增加,请摆脱该约束。

    然后,在创建使用的文本字段时:

    JTextField textField = new JTextField(10);
    

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

        2
  •  0
  •   user9435915 user9435915    7 年前

    您必须设置列的最小大小和首选大小,以便控制大小。覆盖它们,使其成为您想要的。