我有三个类,一个是 JFrame 类,两个是 JPanel 类。我已将初始 JPanel 添加到 JFrame 中,如下所示
public JFrame() {
add(new 1stPanel(this));
setVisible(true);
setLayout(null);
}
然后我想在第一个面板中的按钮上使用 Action 监听器来删除它并添加另一个类中的另一个面板。我尝试给每个类一个变量并使用简单的remove()和add(),如下所示:
private 1stpanel 1p;
private 2ndpanel 2p;
btn.addActionListener((new ActionListener(){
public void actionPerformed(ActionEvent e)
{
remove(1p);
add(2p);
validate();
repaint();
}
}));
这不起作用我也尝试过使用 JFrame.remove(1p) 但这也不起作用。当我执行removeAll()时,它会删除第一个面板JPanel中的所有内容,但我无法添加第二个面板。 我可以使用什么代码取出第一个面板或第一个面板类并添加另一个类中的第二个面板。 感谢您提前提供的帮助。
最佳答案
尝试使用CardLayout
并交换卡片(面板)。
您的问题可能是创建add(new 1stPanel(this))
。您添加一个局部变量,然后使用类的字段。
关于java - 如何切换不同类的 JPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17423555/