Java 卡片布局';我们什么也不做
所以我刚开始练习卡片布局,但我似乎无法让它发挥作用。我查看了10多个网站,我似乎在做与它们相同的事情,但由于某种原因,我的版本不起作用。Java 卡片布局';我们什么也不做,java,swing,layout-manager,cardlayout,Java,Swing,Layout Manager,Cardlayout,所以我刚开始练习卡片布局,但我似乎无法让它发挥作用。我查看了10多个网站,我似乎在做与它们相同的事情,但由于某种原因,我的版本不起作用。next()方法工作正常,但是调用show()没有任何作用 private static CardLayout cards; private static JPanel panel; private Main() { super("Card Layout"); setBounds(0, 0, 500, 500); setDefaultC
next()
方法工作正常,但是调用show()
没有任何作用
private static CardLayout cards;
private static JPanel panel;
private Main() {
super("Card Layout");
setBounds(0, 0, 500, 500);
setDefaultCloseOperation(3);
panel = new JPanel();
add(panel);
cards = new CardLayout();
JPanel p1 = new JPanel();
p1.setBackground(Color.WHITE);
JPanel p2 = new JPanel();
p2.setBackground(Color.BLACK);
JPanel p3 = new JPanel();
p3.setBackground(Color.RED);
JPanel p4 = new JPanel();
p4.setBackground(Color.BLUE);
panel.add("white", p1);
panel.add("black", p2);
panel.add("red", p3);
panel.add("blue", p4);
panel.setLayout(cards);
// cards.next(panel); This works fine for me.
cards.show(panel, "red");
setVisible(true);
}
public static void main(String[] args) {
new Main();
}
您发布的代码有很多问题,但它不起作用的原因只是代码顺序错误。在将组件添加到
JPanel
之前,需要设置其布局管理器。此外,您正在调用错误的add()
方法。只有在添加了包含的JPanel
s之后,才能使用CardLayout
将JPanel
添加到其父容器中
除此之外,您发布的代码不会编译,因为类Main
显然扩展了JFrame
,但您发布的代码中缺少了该类
这是您的代码更正
导入java.awt.CardLayout;
导入java.awt.Color;
导入javax.swing.JFrame;
导入javax.swing.JPanel;
公共类主框架{
专用静态卡片布局卡;
专用静态JPanel面板;
专用干管(){
超级(“卡片布局”);
立根(0,0,500,500);
设置默认关闭操作(3);
panel=新的JPanel();
卡片=新卡片布局();
面板布局(卡片);
JPanel p1=新的JPanel();
p1.立根背景(颜色:白色);
JPanel p2=新的JPanel();
p2.立根背景(颜色:黑色);
JPanel p3=新的JPanel();
p3.挫折背景(颜色:红色);
JPanel p4=新的JPanel();
p4.挫折背景(颜色:蓝色);
面板。添加(p1,“白色”);
面板。添加(p2,“黑色”);
面板。添加(p3,“红色”);
面板。添加(p4,“蓝色”);
//卡片。下一个(面板);这对我来说很好。
卡片显示(面板“红色”);
添加(面板);
setVisible(真);
}
公共静态void main(字符串[]args){
新的Main();
}
}
我推荐教程谢谢,但是如果我在添加内容之前没有将布局设置为卡片布局,那么下一个方法是如何工作的?另外,面板的add方法的两个版本都适用于我。其中一个比另一个有优势吗?最后一个问题,JFrame可以变成卡片布局吗?我使用了教程中的示例代码,我在回答中给出了链接。