import java.awt.*;
public class TenButtons {
public static void main(String[] args) {
GridLayout gl21 = new GridLayout(2,1);
GridLayout gl22 = new GridLayout(2,2);
BorderLayout bl = new BorderLayout();
BorderLayout bl1 = new BorderLayout();
Frame f1 = new Frame("TenButton");
f1.setLayout(gl21);
f1.setLocation(300, 400);
Panel p1 = new Panel(bl1);
//Panel p1 = new Panel(bl);
Panel p2 = new Panel(bl);
Panel ucenter = new Panel(gl21);
Panel dcenter = new Panel(gl22);
Button btnuw = new Button("UpWest");
Button btnue = new Button("UpEast");
p1.add(btnuw, BorderLayout.WEST);
p1.add(btnue, BorderLayout.EAST);
Button btnu = new Button("CenterUp");
Button btnd = new Button("CenterDown");
ucenter.add(btnu);
ucenter.add(btnd);
p1.add(ucenter, BorderLayout.CENTER);
Button btndw = new Button("DownWest");
Button btnde = new Button("DownEast");
p2.add(btndw, BorderLayout.WEST);
p2.add(btnde, BorderLayout.EAST);
for (int i=1; i<=4; i++) {
dcenter.add(new Button("Center" + i));
}
p2.add(dcenter, BorderLayout.CENTER);
f1.add(p1);
f1.add(p2);
f1.pack();
f1.setVisible(true);
}
}
这样出现结果正常
Panel p1 = new Panel(bl1);
Panel p2 = new Panel(bl);
这样出现的结果就没有了p1
Panel p1 = new Panel(bl);
Panel p2 = new Panel(bl);
然而 GridLayout gl21 也是被引用了两次(一次是Frame f1 ,一次是Panel ucenter),却没事
我试了一下,,p1设置的控件被p2设置的给覆盖掉了(至于怎么覆盖的我还没看出来)
到最后 f1.add(p1); f1.add(p2);,,起始p1里已经没东西了,,,题主可以把f1.add(p2);注释了,,,窗口什么东西都没了。
把f1.add(p1); 放在如下位置,,可以正常运行
Panel p1 = new Panel(bl);
Panel p2 = new Panel(bl);
。。。
p1.add(ucenter, BorderLayout.CENTER);
f1.add(p1);
Button btndw = new Button("DownWest");
。。。