如何从另一个班级处置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();
}
MainWindow.main_f.dispose()
无效,因为main_f
不是变量。你能救我吗?
答案 0 :(得分:2)
<强>建议强>:
将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;
}
.
.
.
}
然后在Disposing
类中,您应该有一个MainWindow
实例,您只需执行以下操作即可处置其JFrame
实例:
mainWindowInstance.getMainFrame().dispose();
<强>建议强>:
修改强>:
这是为了解决您所看到的错误:
关于第一个错误,这是因为在我提供的示例中,我使用了final
修饰符。必须在创建对象时初始化此字段。因此,您必须具有多个构造函数。要解决此问题,请删除final
修饰符,或初始化main_f
的每个构造函数中的MainWindow
字段。
关于第二个错误,mainWindowInstance
是我为 你 创建的内容。这是一个“例如” -
public class Disposing{
private MainWindow mainWindowInstance;
public Disposing(){
mainWindowInstance = new MainWindow();
.
.
.
}
public void diposeMainFrame(){
mainWindowInstance.getMainFrame().dispose();
}
}
答案 1 :(得分:0)
如果你想像这样访问它,你需要让main_f成为一个静态变量。
但是,这是非对象模式。而不是那样做,这样做:
另一种方法是向DisposingJFrame提供MainWindow的实例(就像那样,你不需要将MainFrame声明为单例)
答案 2 :(得分:0)
有一种最简单的方法。从另一个类处理类的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();
}
}