java - GridBagLayout 调整组件大小

标签 java swing gridbaglayout

这是我使用 GridBagLayout 布局的内容:

normal layout

但是,当我选择一个文件时,应该会填充几个标签。这是我使用那些小的“...”按钮选择文件后的样子:

messed layout

如您所见,整个布局变得一团糟。我在 actionlistener 中所做的就是:

            fileTxt = fileChooser.getSelectedFile();
            fileTxtField.setText(fileTxt.getAbsolutePath());
            labels = getLabels(); 
            lbl1.setText(labels[0].toUpperCase());
            Dimension size = lbl1.getPreferredSize();
            lbl1.setMinimumSize(size);
            lbl1.setPreferredSize(size);
            lbl2.setText(labels[1]);
            lbl2.setToolTipText(longLbl);
            size = lbl2.getPreferredSize();
            lbl2.setMinimumSize(size);
            lbl2.setPreferredSize(size);
            button1.setPreferredSize(new Dimension(20,25));
            button2.setPreferredSize(new Dimension(20,25));

所以,基本上,按钮将变为它们的原始尺寸,而不是首选尺寸。这会打乱整个布局。我该如何解决?所有组件都设置为不填充 gridBagConstraints.fill 的 gridBagConstraint 设置为 GridBagConstraints.NONE - 但是,布局仍然搞砸了:(

更新

根据您的建议,我删除了调用 setPreferredSize() 方法的代码,这就是我得到的:

enter image description here

显然,这是我想要避免的 - 一个大于其文本的按钮,这是在按钮上设置 setPreferredSize 的原因。现在我该怎么办?

最佳答案

不要调用 setPreferredSize()。让 LayoutManager 执行此操作。

在您的 GridBagConstraints 中定义 fillweightx 参数来定义额外空间的分配方式。

关于java - GridBagLayout 调整组件大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10329412/

相关文章:

java - JScrollPane 和 GridBagLayout

java - 如何在面板上绘制分隔符 (GridBagLayout)

java - GridBag Layout 如何将组件向北推

java - Jlist 自定义渲染器

java - Object vararg 和 int vararg 编译错误

java - 如何在 JFreeChart 中以秒为单位省略分数?

java - 如何使用 openGL 在 android studio 中渲染 .dae(collada) 文件

java - 即时重绘和验证

java - Apple Java 更新 1.6.0_51 后 Swing 应用程序卡住了

java - 运行代码格式化程序时,我可以阻止 Intellij 拆分字符串文字吗?