当前位置: 首页 > 知识库问答 >
问题:

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

仲孙鸣
2023-03-14

我想减少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();

共有2个答案

黎腾
2023-03-14

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

卞成荫
2023-03-14

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

c.fill = GridBagConstraints.HORIZONTAL;

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

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

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

JTextField textField = new JTextField(10);

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

 类似资料:
  • 当然抱歉我的英语不好。我正在制作一个窗口,其中有一个面板和一个窗体中的面板。该面板使用distribution manager“GridBagLayout”,我可以正确分发组件。我的问题是,在填充文本字段时,键入(JTextField)会放大字段,并且不会保留其大小。从图中可以看出,介绍“品牌”的字母越来越多,“品牌”领域也越来越大。我正在与NetBeans合作,如果有人发生了或知道可能是什么问题

  • 问题内容: 我想要实现以下目标: 我能获得的最接近的是以下(伪)代码: 每当我想添加组件时,就将它们添加到内部容器中: ....等 我面临以下问题: 我让布局管理器负责所有UI元素的大小。所以最好不要使用任何.setxxSize()方法。一个JTextArea,包含大量文本,将使用所有需要的空间(垂直和水平)。完全没问题。每当调整框架的大小时,JTextArea都会增长,这仍然是可以的。但是每当我

  • 问题内容: 如何调整JTextField的大小? 问题答案: 如果看一下Javadoc,您会看到JTextField是从Component派生的,并且具有setSize()方法。如果您没有布局管理器,那就很有用。 如果你 这样做 有一个布局管理器,则有必要对setPreferredSize() / / 是要走的路。

  • 我正在使用NetBeans GUI编辑器创建一个应用程序,其中我想要一个,其顶部组件将是中的和底部组件将是,或类似的东西。 当我向下拉分隔符,从而增加顶部组件的大小时,所有东西的大小似乎都调整得很好。 当我尝试向上推动分隔符时,问题就出现了:分隔符似乎位于下方(也可能位于下方)。 我尝试了和的首选/最小/最大大小的各种组合,但似乎都不起作用。 这是 Netbeans 生成的代码中可能与手头的问题有

  • 我使用一些JLabels和JTextFields作为JTree中的编辑器和渲染器。 用户可以点击任何JTextField并修改文本。一切正常。 我所缺少的是如何在用户键入时动态调整(增长)JTextField。 下面是一个说明问题的小示例程序。点击即“颜色”并输入一些额外的字符。JTextField保持其大小,这是预期的,但我希望它能增长和缩小以适应文本。 我尝试了不同的布局管理器,计算JText

  • 我注意到在添加滚动条时会调整高度内容的大小(因为内容超过了宽度)。 密码... 注意:如果我使用,它会在最大化窗口时增加边框之间的间距,我不希望这样。 正如您所看到的,第2行被切断了,是否有必要不调整它的大小(除了将它设置为,如果最大化窗口,它仍然显示条形)?