2011-07-08 44 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