我想工作到我的程序的概念基本上是:如何遠程切換JPanel?
- 主窗口:保存程序的主框架主類,即:
public class MainWindow extends JFrame {
...
}
- 其他類:類該擴展JPanel,使得它們可以容易地添加到主窗口作爲一個對象或實體,即:
public class SomePanel extends JPanel {
...
}
這樣,我可以說,對於主窗口:
public MainWindow() {
...
SomePanel sp = new SomePanel();
add(sp);
...
}
當一些動作事件被觸發時,我可以說,在主窗口類:
// remove the current panel
getContentPane().remove(sp);
// insert the new panel
getContentPane().add(someOtherPanel);
validate();
repaint();
的概念,我想,就像是CardLayout,除了我還沒有得到解決,以學習CardLayout但我感覺就像嘗試這個概念。不過,在某些時候我可能會學習CardLayout,這取決於更容易些。
但是我的主要問題是,如果一切都在不同的類中,那麼如何基於ActionEvent的觸發器如此遠程切換JPanel?我認爲這些類之間必須有一些共享組件,但這似乎不起作用。我在正確的軌道上嗎?
我嘗試使用remove()和add()函數的代碼似乎沒有工作,因爲當我觸發組件的ActionEvent(監聽器被添加以及所有內容)時,沒有任何更改。我還包括validate()和repaint(),但仍然沒有任何反應。
我不再是初學者,但也不是非常有經驗,所以如果有什麼明顯的我失蹤了,請耐心等待。謝謝你的幫助。
'theWindow.revalidate()'可能會更好地工作 – MadProgrammer
我沒有意識到這種方法,我總是使用'repaint'。謝謝,我編輯了我的回覆。 – snickers10m
現在我可以放心:D – MadProgrammer