Java 来自JPanel的不可见JFrame

Java 来自JPanel的不可见JFrame,java,swing,jpanel,jlabel,Java,Swing,Jpanel,Jlabel,我有两个类,其中一个扩展自JPanel,另一个扩展自JFrame 现在我添加了一个从JPanel扩展到另一个类的类,我想从JPanel类中设置JFrame false的可视性,我应该怎么做 public class test extends JPanel{ ... } public class test2 extends JFrame{ test t; public test2(){ t = new test(); } } 公共类测试扩展了JPanel{ ... } 公

我有两个类,其中一个扩展自JPanel,另一个扩展自JFrame 现在我添加了一个从JPanel扩展到另一个类的类,我想从JPanel类中设置JFrame false的可视性,我应该怎么做

public class test extends JPanel{ ... } public class test2 extends JFrame{ test t; public test2(){ t = new test(); } } 公共类测试扩展了JPanel{ ... } 公共类test2扩展了JFrame{ 试验t; 公共测试2(){ t=新测试(); } }
我想从test看不可见test2,我应该怎么做呢?

你必须通过
JFrame
JPanel
的引用,这样它才能调用
setVisible(false)


尽管这听起来像是一个糟糕的设计,因为让每个类相互引用是紧密耦合的,不鼓励这样做。我建议使用第三个“Controller”类型的类来接收来自这两个项目的请求并对GUI进行更改。

您必须通过对
JFrame
的引用,才能调用
setVisible(false)


尽管这听起来像是一个糟糕的设计,因为让每个类相互引用是紧密耦合的,不鼓励这样做。我建议使用第三个“Controller”类型的类来接收来自这两个项目的请求并对GUI进行更改。

主要方法在哪里?您是从JPanel类创建JFrame类的实例吗?我找到了方法,将test2 obj设置为test method,然后Inivisible ITClassName通常以大写字母开头:test,test2。main方法在哪里?您是否从JPanel类创建JFrame类的实例?我找到了方法,将test2 obj设置为test method,然后Inivisible ITClassName通常以大写字母开头:test,test2。您不需要将框架的引用传递给面板。您可以使用SwingUtilities获取面板添加到的窗口。您不需要将框架的引用传递给面板。您可以使用SwingUtilities获取面板添加到的窗口。