Java 如何用另一个JPanel替换一个JPanel?

Java 如何用另一个JPanel替换一个JPanel?,java,swing,jframe,Java,Swing,Jframe,我有一个类迷宫(扩展JPanel)。我想制作一个“new”按钮,用新变量替换这个类的变量 btnNewMaze.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { maze.repaint(); maze = new Maze((int) xSpinner.getValue(), (int) ySpi

我有一个类迷宫(扩展JPanel)。我想制作一个“new”按钮,用新变量替换这个类的变量

    btnNewMaze.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            maze.repaint();
            maze = new Maze((int) xSpinner.getValue(), (int) ySpinner.getValue());  
            maze.repaint();
        }
    });
其他按钮工作正常。 但是这不能正常工作——不能重新绘制、方法和异常等。
如何解决这个问题或用另一个代码替换?

在您提供的代码中,我甚至没有看到
JButton
。如果你想要一个按钮,你需要构造它(就像你构造任何其他对象一样),也许还需要将它添加到适当的容器中。

在你提供的代码中,我甚至没有看到
JButton
。如果你想要一个按钮,你需要构造它(就像你会构造任何其他对象一样),并可能将它添加到适当的容器中。

不知何故,我认为你想要的是,当按下按钮时,一个已经添加到可见容器中的迷宫对象(例如JPanel)被替换为迷宫的新实例

如果是这种情况,并且此“迷宫”对象已添加到容器(例如JPanel),那么,当您执行您提供的代码时,即:maze=new maze(…),您的旧迷宫对象将保持添加到容器中且不受影响。容器仍将保存对旧迷宫对象的内部引用

事实上,当代码maze=newmaze(…)被执行时,所发生的不是以前的maze对象替换。实际上,发生的情况是引用变量maze指向新的maze()对象,而旧实例仍然附加到容器

如果您希望替换已添加到容器中的旧迷宫对象,则应将其从容器中移除并添加新对象


这一切可能并非如此,但鉴于提供的信息,这是我能够理解的。请给我们更多的细节(一个完整的类或方法,抛出的异常,你到底想做什么,等等)。

不知何故,我认为你想要的是,当按下按钮时,用一个已经添加到可见容器(例如JPanel)中的迷宫对象替换迷宫的新实例

如果是这种情况,并且此“迷宫”对象已添加到容器(例如JPanel),那么,当您执行您提供的代码时,即:maze=new maze(…),您的旧迷宫对象将保持添加到容器中且不受影响。容器仍将保存对旧迷宫对象的内部引用

事实上,当代码maze=newmaze(…)被执行时,所发生的不是以前的maze对象替换。实际上,发生的情况是引用变量maze指向新的maze()对象,而旧实例仍然附加到容器

如果您希望替换已添加到容器中的旧迷宫对象,则应将其从容器中移除并添加新对象


这一切可能并非如此,但鉴于提供的信息,这是我能够理解的。请提供更多详细信息(整个类或方法、引发的异常、您正试图执行的操作等等)。

假设您的
maze
实例已添加到面板中,您必须先将其从面板中删除,然后再将其替换为新实例:

this.remove(maze);
maze = new Maze(....);
this.add(maze, ...);

假设您的
maze
实例已添加到面板中,则必须先将其从面板中删除,然后再将其替换为新实例:

this.remove(maze);
maze = new Maze(....);
this.add(maze, ...);

你从哪里打电话来的?它在迷宫教室里吗?另外,您得到了哪些异常?抛出的异常到底是什么?我正在从另一个类(Main)调用代码。ArrayIndexOutOfBoundsException,但它与迷宫类的方法有关。@DarkSun:我认为您的问题没有包含足够的信息,我们无法回答。考虑添加重要的细节:异常发生在哪里,哪一行代码?我们可能需要更好地理解您的问题的任何其他内容。
ArrayIndexOutOfBoundsException
意味着(据我所知),它与创建新的
Maze
对象的代码无关。您从何处调用该代码?它在迷宫教室里吗?另外,您得到了哪些异常?抛出的异常到底是什么?我正在从另一个类(Main)调用代码。ArrayIndexOutOfBoundsException,但它与迷宫类的方法有关。@DarkSun:我认为您的问题没有包含足够的信息,我们无法回答。考虑添加重要的细节:异常发生在哪里,哪一行代码?我们可能需要更好地理解您的问题的任何其他内容。
ArrayIndexOutOfBoundsException
意味着(据我所知),它与创建新的
迷宫
对象的代码无关。