我有一個擴展了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