java - 如何将一个 JPanel 替换为另一个 JPanel?

标签 java swing jframe

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

    btnNewMaze.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            maze.repaint();
            maze = new Maze((int) xSpinner.getValue(), (int) ySpinner.getValue());  
            maze.repaint();
        }
    });

其他按钮工作正常。 但这不能正常工作——不能重绘,方法会抛出异常,等等。 我该如何解决这个问题或用其他代码替换?

最佳答案

不知何故,我认为您想要的是在按下按钮时将已添加到可见容器(例如 JPanel)的迷宫对象替换为 Maze 的新实例。

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

事实上,当代码 maze = new Maze(...) 执行时,发生的并不是之前的迷宫对象替换。实际上,发生的情况是您的引用变量 maze 指向新的 Maze() 对象,而旧实例仍然附加到容器。

如果您想要替换已添加到容器中的旧迷宫对象,那么您应该将其从容器中删除并添加新的。

情况可能并非如此,但这就是我根据所提供的信息所能理解的。请向我们提供更多详细信息(整个类或方法、引发的异常、您到底想要做什么,等等)。

关于java - 如何将一个 JPanel 替换为另一个 JPanel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10639520/

相关文章:

Java-如何用java写渐变文字?

java - 找到多维数组中最大的元素

java - Java 的 MIB 编译器

java - 由 DefaultMutableTreeNode 制作的遍历树

Java 矩形相交始终为真

java - JMenuItem 构造函数不接受操作

java - 如何将不同类的图形组件添加到 jframe 中?

java - 设置 hive.exec.pre.hooks 时出现 ClassNotFoundException

使用动态代理的 Java 继承 hack

java - 如何从使用 BorderLayout 的 JFrame 中删除组件