2011-07-08 83 views
0

我有2個類,其中一個擴展自JPanel,另一個擴展自JFrame 現在我添加了從JPanel擴展到其他類的類,並且我想從JPanel類中將JFrame的setVisible設置爲false,我應該這樣做嗎?來自JPanel的隱形JFrame

 
public class test extends JPanel{ 
... 
} 

public class test2 extends JFrame{ 
    test t; 
    public test2(){ 
    t = new test(); 
    } 
} 

我想從測試中無法測試test2,我應該怎麼做?

+1

主要方法在哪裏?你是從JPanel類創建JFrame類的實例嗎? – Logan

+0

我找到了方法, 將test2 obj設置爲測試方法,然後使其不可用 –

+1

類名通常以大寫開頭:Test,Test2。 – extraneon

回答

3

您必須將您的JFrame的參考值過濾到JPanel,以便它可以調用setVisible(false);

雖然這聽起來像一個糟糕的設計,因爲每個類彼此相互引用是緊耦合,並且不鼓勵。我會建議有第三個「Controller」類型的類,它接收來自這兩個項目的請求並對GUI進行更改。

+0

+1,它看起來像一個糟糕的設計。 :) – mre

+0

您不需要將該框架的引用傳遞給面板。您可以使用SwingUtilities來獲取面板添加到的窗口。 – camickr