试图在JLayeredPane中重叠两个相同大小的JPanel

时间:2017-08-03 16:53:03

标签: java swing jlayeredpane

我正在尝试重叠两个相同大小的JPanels(这里是'pseudo'和'svg')。 JPanel伪背后是svg。 JButton应该在svg前面移动伪。结果是centerPanel.moveToFront(伪)不起作用。我错过了什么吗?

        centerPanel = new JLayeredPane();
        centerPanel.setLayout(new BorderLayout());

        centerPanel.add(pseudo, BorderLayout.CENTER, -1);
        centerPanel.add(svg, BorderLayout.CENTER, 0);

        view3D = new JButton("View 3D");

        view3D.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent ae) {
                centerPanel.moveToFront(pseudo);
            }
        });

2 个答案:

答案 0 :(得分:2)

  

JButton应该在svg

之前移动伪

然后你应该使用CardLayoutCardLayout是一个布局管理器,它允许2个(或更多)组件占用相同的空间,但一次只能看到一个组件。

阅读How to Use CardLayout上的Swing教程中的部分以获取更多信息和一个工作示例以帮助您入门

答案 1 :(得分:0)

新代码是:

        JPanel cardsPanel = new JPanel(new CardLayout());

        cardsPanel.add(svg, "svgPanel");
        cardsPanel.add(pseudo, "pseudo");

        view3D = new JButton("View 3D");

        view3D.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent ae) {
                    CardLayout cl = (CardLayout)(cardsPanel.getLayout());
                    cl.show(cardsPanel, "pseudo");
                }
            }
        });