CardLayout中有超过2个可见JPanel

时间:2015-06-08 07:24:04

标签: java swing jpanel layout-manager cardlayout

我在JPanel 中同时显示两个以上CardLayout个对象时遇到问题。虽然我可以放置一些面板,但它们不会同时出现,我无法按照自己的意愿调整它们。为了更清楚地了解我想要的内容,我添加了一个测试图像。

What I need to DO

1 个答案:

答案 0 :(得分:5)

在这种情况下,您可以使用BorderLayout面板作为常量和卡片的容器,然后使用CardLayout的卡片(import java.awt.BorderLayout; import java.awt.CardLayout; import java.awt.Color; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.BorderFactory; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class TestFrame extends JFrame { public static void main(String... s) { new TestFrame(); } public TestFrame() { init(); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); pack(); setLocationRelativeTo(null); setVisible(true); } private void init() { setLayout(new BorderLayout()); JLabel head = new JLabel("Header"); head.setBorder(BorderFactory.createLineBorder(Color.BLACK)); JLabel side = new JLabel("SideBar"); side.setBorder(BorderFactory.createLineBorder(Color.BLACK)); JPanel changable = getPanel(); changable.setBorder(BorderFactory.createLineBorder(Color.BLACK)); add(head,BorderLayout.NORTH); add(side,BorderLayout.WEST); add(changable,BorderLayout.CENTER); } private JPanel getPanel() { final CardLayout cards = new CardLayout(5,5); final JPanel p = new JPanel(cards); p.add(new JLabel("1"), "1"); p.add(new JLabel("2"), "2"); p.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { super.mouseClicked(e); cards.next(p); } }); return p; } } )。这是一个简单的例子:

openParentApplication

enter image description here