Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中关闭Jpanel程序_Java_Swing_Jpanel - Fatal编程技术网

如何在Java中关闭Jpanel程序

如何在Java中关闭Jpanel程序,java,swing,jpanel,Java,Swing,Jpanel,我正在制作一个Java游戏,我需要一些关于如何做某事的建议 目前我正在使用2个不同的.java文件来制作游戏。我有一个扩展JFrame的主程序,我调用另一个扩展JPanel的.java文件 游戏目前可以运行,但我想为游戏创建另一个模式,我认为如果我为它创建另一个文件会更好 以下是主文件的所有代码。我移除了所有无用的不需要的东西: import java.awt.*; import javax.swing.*; public class ProgramMain extends JFrame i

我正在制作一个Java游戏,我需要一些关于如何做某事的建议

目前我正在使用2个不同的.java文件来制作游戏。我有一个扩展JFrame的主程序,我调用另一个扩展JPanel的.java文件

游戏目前可以运行,但我想为游戏创建另一个模式,我认为如果我为它创建另一个文件会更好

以下是主文件的所有代码。我移除了所有无用的不需要的东西:

import java.awt.*;
import javax.swing.*;

public class ProgramMain extends JFrame  implements KeyListener
{
    private Program mode1;
    private Program2 mode2;

    public ProgramMain ()
    {
        setResizable (false);
        mode1 = new Program ();
        getContentPane ().add (mode1, BorderLayout.CENTER);
        if (mode1.change == true)
        {
            this.remove (mode1);
            board = new Program2 ();
            this.getContentPane ().add (mode2);            
        }
    }

  public void actionPerformed (ActionEvent event)
  {
  }

    public static void main (String[] args)
    {
        GameMain frame = new GameMain ();
        frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
        frame.pack ();
        frame.setVisible (true);
    }
}
是否有一种方法可以重新启动ProgramMain()方法,以便它执行另一次检查,因此如果这次if语句变为true,它将更改屏幕并打开Program2.java文件


这是我这里的主要问题。我不知道如何在.java程序之间切换。如果我希望我的主程序(ProgramMain)读取另一个program/.java文件,我需要做什么。

对于切换,您可以在需要切换的帧中有一个操作

ActionListener al = new ActionListener(){
    public void actionPerformed(ActionEvent ae) {
        if (board1) {
            getContentPane().add(gameBoard, BorderLayout.CENTER);
        } else {
            getContentPane().add(gameBoard2, BorderLayout.CENTER);
        }
    }
};
buttonSwitch.addActionListener (al);

你说有另一个文件是什么意思?你想打开一些帧吗?想在帧之间切换吗?对不起,我应该更具体一点我的意思。我将编辑我的第一个问题,以便更好地解释,因为在注释
this.remove(屏幕)中很难解释;添加(其他面板)使用
卡片布局
,如中所示!非常感谢你的链接。但这并不是我真正想要的。但是,如果我想做的事情不起作用,那是一个很好的第二个选择。我真的找到了一个很好的方法来做这件事。但一个问题是,这种检查在开始时只执行一次。有没有办法让每次在gameBoard java程序中重新绘制paintComponent时都进行检查?你的问题和评论都不清楚你想做什么。我甚至对我的解释感到困惑。我改变了整个问题,使之更加直截了当,以理解我试图实现的目标。谢谢您需要在运行时或启动时切换第二个程序吗?我希望切换在运行时发生。基本上,在程序中,如果用户单击屏幕的某个区域,它将切换到另一个程序。