【发布时间】:2014-11-23 04:24:10
【问题描述】:
我正在尝试使用GridBagLayout,但我没有得到预期的结果,并且在此代码中找不到错误:
public class GridBagEx1 extends JPanel {
private static final long serialVersionUID = 1L;
protected void makebutton(String name, GridBagLayout gridbag, GridBagConstraints c) {
JButton button = new JButton(name);
gridbag.setConstraints(button, c);
add(button);
}
public void init() {
GridBagLayout gridbag = new GridBagLayout();
GridBagConstraints c = new GridBagConstraints();
setLayout(gridbag);
c.fill = BOTH;
c.weightx = 1.0;
c.weighty = 1.0;
c.anchor = CENTER;
c.insets.top = 5;
c.insets.bottom = 5;
c.insets.left = 5;
c.insets.right = 5;
c.gridx = 0;
c.gridy = 0;
c.gridheight = 1;
c.gridwidth = 2;
makebutton("Button1", gridbag, c);
c.gridx = 2;
c.gridy = 0;
c.gridheight = 1;
c.gridwidth = 1;
makebutton("Button2", gridbag, c);
c.gridx = 3;
c.gridy = 0;
c.gridheight = 2;
c.gridwidth = 2;
makebutton("Button3", gridbag, c);
c.gridx = 0;
c.gridy = 1;
c.gridheight = 1;
c.gridwidth = 1;
makebutton("Button4", gridbag, c);
c.gridx = 1;
c.gridy = 1;
c.gridheight = 1;
c.gridwidth = 2;
makebutton("Button5", gridbag, c);
c.gridx = 0;
c.gridy = 2;
c.gridheight = 1;
c.gridwidth = 1;
makebutton("Button6", gridbag, c);
c.gridx = 1;
c.gridy = 2;
c.gridheight = 1;
c.gridwidth = 2;
makebutton("Button7", gridbag, c);
c.gridx = 3;
c.gridy = 2;
c.gridheight = 1;
c.gridwidth = 1;
makebutton("Button8", gridbag, c);
c.gridx = 4;
c.gridy = 2;
c.gridheight = 1;
c.gridwidth = 1;
makebutton("Button9", gridbag, c);
}
public static void main(String args[]) {
JFrame frame = new JFrame();
GridBagEx1 ex1 = new GridBagEx1();
ex1.init();
frame.add(ex1);
frame.pack();
frame.setVisible(true);
}
}
这张图说明了我需要什么:
黄色为按钮名称,红色为行列。
这是真正发生的事情:
谁能解释我的代码有什么问题?
【问题讨论】:
-
我还不能解释这个问题,但必须说明你的问题很好地提出了,谢谢你和 1+。
-
@HovercraftFullOfEels 谢谢
-
c.fill = BOTH;应该是c.fill = GridBagConstraints.BOTH;和c.anchor = CENTER;相同,以便编译代码。 -
@user1803551 如果你不是
import static java.awt.GridBagConstraints.*;:-) -
@GeroldBroser 真...真...
标签: java swing gridbaglayout