gpt4 book ai didi

java - 使用 remove() 后 JPanel 不会消失

转载 作者:行者123 更新时间:2023-11-30 06:26:26 27 4
gpt4 key购买 nike

我正在使用 Java 和 Swing 编写扫雷程序,并且正在研究当用户以所需尺寸重新启动游戏时代码应该执行的操作。我有一个 MyGrid 类,它有一个 (int, int) 构造函数并且是 JPanel 的扩展。它绘制网格并处理它所发生的事情(点击、炸弹放置等)。因此,在游戏类中,我有一个 ActionLister,当用户想要开始一个新游戏时,我会验证用户的输入,然后我想在我的 JFrame(这里称为 myPane)上绘制一个新网格。所以我这样做:

        myPane.remove(mswGrid);
MyGrid mswGrid = new MyGrid(nowaSzerokosc, nowaWysokosc);
myPane.getContentPane().add(mswGrid, BorderLayout.CENTER);
myPane.repaint();
myPane.validate();

虽然它第一次画得很好,但每隔一次它就会画在我之前的网格之上或之下,所以当我们有 3x3 和 15x15 时,你必须调整窗口大小才能看到那些单元格,它们被画在下面之前的 3x3 网格。为什么网格不会消失?我的意思是 - 当我们创建新对象时,该对象早已不复存在,因此由于 remove() 而应该是图形表示。为什么不是呢?

最佳答案

按此顺序调用。

    myPane.revalidate();
myPane.repaint();

关于java - 使用 remove() 后 JPanel 不会消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14277386/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com