您需要致电:
ca.show(contentPane, "name_1353086933711396000");
为此,您必须添加第二个面板,如下所示:
contentPane.add("name_1353086933711396000", panel_1);
使用时CardLayout
确保将导航按钮保留在“卡片”本身之外的单独容器上,以便它们在整个导航过程中可见。在这里,您可以在框架中放置一个新的导航容器BorderLayout.SOUTH
位置。对于顺序导航,方法previous http://docs.oracle.com/javase/7/docs/api/java/awt/CardLayout.html#previous%28java.awt.Container%29 and next http://docs.oracle.com/javase/7/docs/api/java/awt/CardLayout.html#next%28java.awt.Container%29可用。
还要避免使用绝对定位(null
布局)。看不使用布局管理器(绝对定位) http://docs.oracle.com/javase/tutorial/uiswing/layout/none.html.
public CardLay() {
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(500, 400);
ca = new CardLayout(0, 0);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(ca);
JPanel panel1 = new JPanel();
panel1.add(new JButton("Test Button"));
contentPane.add("card1", panel1);
JPanel panel2 = new JPanel();
contentPane.add("card2", panel2);
JCheckBox chckbxNewCheckBox = new JCheckBox("New check box");
panel2.add(chckbxNewCheckBox);
JPanel navigationPanel = new JPanel();
JButton btnPrevious = new JButton("< PREVIOUS");
btnPrevious.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ca.previous(contentPane);
}
});
navigationPanel.add(btnPrevious);
JButton btnNext = new JButton("NEXT >");
btnNext.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ca.next(contentPane);
}
});
navigationPanel.add(btnNext);
add(contentPane);
add(navigationPanel, BorderLayout.SOUTH);
}
受到推崇的: 如何使用卡片布局 http://docs.oracle.com/javase/tutorial/uiswing/layout/card.html