GridBagLayout调整组件大小

Jay*_*Jay 1 java swing gridbaglayout

这是我使用GridBagLayout布局的:

正常布局

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

混乱的布局

如您所见,整个布局搞砸了.我在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));
Run Code Online (Sandbox Code Playgroud)

因此,基本上,按钮将达到其原始尺寸而不是首选尺寸.这会弄乱整个布局.我该如何解决?所有组件都设置为不填充gridBagConstraints.fill的gridbagconstraint设置为GridBagConstraints.NONE - 但是,布局仍然搞砸了:(

UPDATE

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

在此输入图像描述

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

Sta*_*avL 5

不要打电话setPreferredSize().我们LayoutManager这样做吧.

GridBagConstraintsdefine fillweightxparameters中定义应如何分配额外空间.