[英]Disposing JFrame from another class
如何从另一个 class 处理JFrame
? 我的代码在下面列出。
public class MainWindow
{
JFrame main_f = new JFrame("xx");
main_f.getContentPane().setLayout(new BorderLayout());
main_f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
.
.
.
}
处理 class:
public static void DisposingJFrame (){
.
.
.
MainWindow.main_f.dispose();
}
MainWindow.main_f.dispose()
不起作用,因为main_f
不是变量。 你能帮助我吗?
建议:
将JFrame
实例设为MainWindow
class 的字段,并为其提供访问器方法。
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;
}
.
.
.
}
然后在Disposing
class 中,您应该有一个MainWindow
实例,您只需在其中执行以下操作即可处理其JFrame
实例:
mainWindowInstance.getMainFrame().dispose();
建议:
编辑:
这是为了解决您看到的错误:
关于第一个错误,这是因为在我提供的示例中,我使用了final
修饰符。 此字段必须在 object 创建时初始化。 因此,您必须拥有多个构造函数。 要解决此问题,请删除final
修饰符,或在MainWindow
的每个构造函数中初始化main_f
字段。
关于第二个错误, mainWindowInstance
是我留给您创建的。 这是一个“例如” -
public class Disposing{
private MainWindow mainWindowInstance;
public Disposing(){
mainWindowInstance = new MainWindow();
.
.
.
}
public void diposeMainFrame(){
mainWindowInstance.getMainFrame().dispose();
}
}
有一种最简单的方法可以做到这一点。 用于从另一个 ZA2F2ED4F8EBC2CBB64C21A29DZ 处理 class 的 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();
}
}
如果你想像这样访问它,你需要让 main_f 成为一个 static 变量。
但是,这是非 object 模式。 取而代之的是,这样做:
另一种方法是为 DisposingJFrame 提供 MainWindow 的实例(这样,您不需要将 MainFrame 声明为单例)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.