我有一个扩展了JFrame的类,它有一个BorderLayout。它有两个JPanel类型的私有实例变量。它们代表按钮面板,被称为flipButton和confidenceButtons。当你点击按钮时,按钮面板将被另一个按钮面板替换。也就是说,如果你点击了flipButton中的一个按钮,flipButton被confidenceButtons取代。我试图做这样的:在JFrame中用JPanel替换JPanel
private class FlipListener implements ActionListener{ public void actionPerformed(ActionEvent e){ remove(flipButton); add(confidenceButtons,BorderLayout.SOUTH); validate(); ... } } private class ColorListener implements ActionListener{ ... public void actionPerformed(ActionEvent e){ ... remove(confidenceButtons); add(flipButton,BorderLayout.SOUTH); validate(); } }
在flipButton按钮具有FlipListeners和confidenceButtons的那些有ColorListeners。当程序运行时,点击一个按钮将删除面板,但没有任何东西被添加来替换它。我究竟做错了什么?
EDIT
CardLayout原来是简单和容易的解决方案。事实证明,上面的代码确实有效;问题是我的代码的另一部分有一个错字。 >。 <但是,我一直在使用这些方法时遇到问题,我发现CardLayout为我简化了它。谢谢。
也是我的第一个想法。 Cardlayout专为此用途而设计,是最佳的可维护选择。 – extraneon
简单的解决方案,像魅力一样工作。谢谢! – Shelley