2015-08-08 112 views
0

我是新來的GUI創建和有以下問題:JFrame如何對JPanel(Swing)做出反應?

我有一個主要的類:AppWindow.java包含一個JFrame。

如果按下按鈕,則將擴展JPanel的類new.java添加到上層JFrame中。到目前爲止工作正常。

現在的問題是,按下JPanel中的Button時,應該刪除JPanel。我怎樣才能做到這一點?

我的想法:JFame必須以某種方式傾聽JPanel,無論它是否可能被刪除。

謝謝!

+0

使用'JPanel'中的'getParent',如果面板不包含在任何容器中,它將返回父容器'或'null'。使用'Container#remove'(傳遞'this')將容器從容器中移除 – MadProgrammer

+2

使用['CardLayout'](http://download.oracle.com/javase/8/docs/api/java/awt /CardLayout.html),如[這個答案](http://stackoverflow.com/a/5786005/418556)所示,而不是所有這些添加和刪除的東西。 –

+0

那裏有沒有真正好的教程能解釋所有這些東西? 所以我做了以下幾點? 'codeJPanel o =(JPanel)new.this.getParent(); o.remove(Neu.this); o.repaint();' – SwingNoob

回答

0

將此行添加到按下的按鈕代碼中,並將按鈕按下時要刪除的面板或框架名替換爲YourJpanelName。

YourJpanelName.setVisible(false); 
+0

除了它不會從容器中「移除」並且一些佈局管理器「可能」繼續將其視爲「可見」 – MadProgrammer