我正在尝试重叠两个相同大小的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);
}
});
答案 0 :(得分:2)
JButton应该在svg
之前移动伪
然后你应该使用CardLayout
。 CardLayout
是一个布局管理器,它允许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");
}
}
});