我想将按钮大小调整为相同大小,然后放置在 JApplet 的面板中。我尝试过使用
public void init() {
// TODO start asynchronous download of heavy resources
JButton btnWestern=new JButton("Western");
JButton btnPop=new JButton("Pop");
GridBagConstraints c4=new GridBagConstraints();
JPanel jPanel1 = new JPanel();
getContentPane().setLayout(new java.awt.GridBagLayout());
jPanel1.setLayout(new java.awt.GridBagLayout());
c4.gridx = 0;
c4.gridy = 0;
c4.insets = new Insets(36, 10, 0, 249);
jPanel1.add(btnWestern, c4);
c4.gridx = 0;
c4.gridy = 1;
c4.insets = new Insets(33, 10, 0, 249);
jPanel1.add(btnPop, c4);
add(jPanel1, new java.awt.GridBagConstraints());
}
当我跑步时,这就是我得到的
但我注意到,如果我将按钮文本更改为相同或具有相同的长度,例如
JButton btnWestern=new JButton("Button1");
JButton btnPop=new JButton("Button2");
我得到了想要的输出
我该怎么做才能确保即使按钮的文本长度不同,按钮的大小也相同?
如果您还没有阅读过如何使用 GridBagLayout 教程,我建议您阅读一下。 GridBagLayout 功能强大,但它也是可用的更复杂的 LayoutManager 之一。
我相信您需要设置
GridBagConstraints.fill
属性才能获得您想要的行为。
在你的情况下,这应该是这样的
c4.fill = GridBagConstraints.HORIZONTAL;
编辑(对观察到的行为的一些解释)当您在两个按钮上使用相同的文本时,它们的计算大小最终是相同的,因此它们会按照您想要的方式呈现。当您使用不同大小的文本时,默认情况下按钮将以适合文本的大小呈现。
GridBagConstraints.fill
的默认值为 GridBagConstraints.NONE
,它指示 LayoutManger 不调整组件的大小。将填充更改为 GridBagConstraints.HORIZONTAL
告诉 LayoutManger 水平调整组件大小以填充显示区域。
GridBagLayout
使用 setPrefferedSize
。尝试使用
Dimension buttonDimension = new Dimension(100, 30);
btnWestern.setPreferredSize(buttonDimension);
btnPop.setPreferredSize(buttonDimension);