当前位置: 首页 > 知识库问答 >
问题:

从另一个类处理JFrame

金阳曜
2023-03-14

如何从另一个类中处理JFrame?下面列出了我的代码。

public class MainWindow

{

JFrame main_f = new JFrame("xx");
main_f.getContentPane().setLayout(new BorderLayout());
main_f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
.
.
.
}

处置类别:

public static void DisposingJFrame (){
.
.
.
MainWindow.main_f.dispose();
}

<代码>主窗口。main\u f.dispose()不起作用,因为它不是变量。你能帮助我吗?

共有3个答案

胡星汉
2023-03-14

有一种最简单的方法。用于从另一个类中处理一个类的JFrame的Java代码如下:

public class Main extends JFrame
{
  Main()
  {
    Main x=new Main();
    Other.a=x;
  }
}

public class Other extends JFrame
{
   static Main a;

   Other()
   {  
      a.dispose();
    }
}
周奇
2023-03-14

如果想这样访问它,需要将main\u f设置为静态变量。

但是,这是非对象模式。相反,请执行以下操作:

  • 使您的MainWindow成为单例
  • 使您的main_f主窗口的字段
  • 调用MainWindow.get实例(). getFrame(). dispse()

另一种方法是将JFrame作为主窗口的实例进行处理(这样,您就不需要将大型机声明为单例)

宇文修文
2023-03-14

建议:

使JFrame实例成为MainWindow类的字段,并为其提供访问器方法。

public final class MainWindow{
    private final JFrame main_f;

    public MainWindow(){
        main_f = new JFrame("xx");
        main_f.getContentPane().setLayout(new BorderLayout());
        main_f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        .
        .
        .
    }

    public final JFrame getMainFrame(){
        return main_f;
    }
    .
    .
    .
}

然后在处置类中,您应该有一个MainWindow实例,您只需在其中执行以下操作即可处置其JFrame实例:

mainWindowInstance.getMainFrame().dispose();

建议:

  • 阅读学习Java语言教程。这是基本的OOP。

编辑:

这是为了解决您看到的错误:

  1. 变量main\u f可能尚未初始化
  2. 找不到符号“mainWindowInstance”

关于第一个错误,这是因为在我提供的示例中,我使用了final修饰符。此字段必须在创建对象时初始化。因此,必须有多个构造函数。要解决此问题,请删除最终修饰符,或初始化主窗口的每个构造函数中的主字段。

关于第二个错误,main WindowInstance是我留给您创建的东西。这是一个“例如”-

public class Disposing{
    private MainWindow mainWindowInstance;

    public Disposing(){
        mainWindowInstance = new MainWindow();
        .
        .
        .
    }

    public void diposeMainFrame(){
        mainWindowInstance.getMainFrame().dispose();
    }
}
 类似资料:
  • 问题内容: 如何从另一个类中处置JFrame?我的代码在下面列出。我使用Netbeans生成表单来生成窗口。我想使用另一个类进行处理(名称为needDispose)。 NETBEANS GENERATE (重要方法是getMainFrame()) 问题答案: 这是一个如何从另一个本身就是JFrame的类中释放JFrame的示例:

  • 我有一个关于JFrames和正确处理它们的快速问题。我有一个有多个关卡的游戏,我希望在使用新关卡创建另一个关卡时处理使用中的框架。 我目前正在开发的程序扩展了一个JFrame,这一直让我感到困惑,因为我不知道那个JFrame叫什么。 无论如何,我有另一个扩展JPanel的类。在这个类中,我有一个方法,当游戏状态完成时,删除所有实例并关闭JFrame。然而这不起作用,因为我无法获取框架的框架,相反,

  • 我已经阅读了很多stackoverflow的页面,但是我无法将我的ArrayList复制到另一个类中。下面是一个场景,我正在构建一个快速的图书储蓄应用程序,类似于图书馆中的应用程序,但更简单(用于学校)。 我有我的主库类(带有main),它为主菜单/选项设置了swing。 我有一个带有新书构造函数的book类,如下所示: 在这个类中,我在确认按钮上添加了一个,以确认上要作为对象添加的输入,如下所示

  • 问题内容: 嗨,我试图将一些文本附加到同一包中另一个类的一个小问题。以下是与JFrame有关的主要类: 我包括测试变量只是为了轻松地重新创建问题,但是无论何时运行append函数,jFrame的文本区域中都不会出现任何内容。在我的方案中,我让客户端从服务器接收文本,然后将其附加到文本框中。 顺便说一句,我正在为JFrame使用IntelliJ GUI设计器。我只包含了重新创建问题所需的代码。我仍在

  • 我想从class1调用class2,但是class2没有一个可以引用的主函数,比如

  • 我有一个关于接口的问题,比如: 现在,我需要这只猫去抓一只老鼠void catchMouse(){std::cout 有几种可能的解决方案,但看起来都不好。 > 在IAnim中添加一个方法,然后使用AnimalFactory创建猫后,我可以从IAnimal调用catchMouse()方法。但是catchMouse并不适用于所有动物,狗不catchMouse。将方法添加到IEM会污染界面,嗅到代码。