java - JFrame 不更新其内容

标签 java swing user-interface awt

我一直在努力让我的 JFrame 重新绘制其内容。在将新组件添加到 JFrame 中后,我尝试同时使用 revaluate() 和 repaint() 方法,但我没有看到框架发生变化。

这是我正在尝试制作的扫雷游戏的简单 GUI。 enter image description here

当用户单击顶部 3 个按钮中的任何一个时,他们会输入以下代码块

private void drawGrid()
{
        removeAll();

        setLayout(new GridLayout(2,1));
        add(new JButton("button"));

        setVisible(true);

        revalidate();
        repaint();
        setVisible(false);
        setVisible(true);
}

单击按钮时,整个应用程序变成白色,但我看不到我添加的新按钮。当我删除两个 setVisible() 方法行时,单击按钮肯定会删除组件,因为我现在无法单击其中任何一个,但 4 个初始按钮仍然可见。删除 revalidate 或 repaint 方法对应用程序没有影响。

我还能尝试什么来让应用程序刷新并显示其新内容。

最佳答案

JFrame 上调用 removeAll 是危险的,可能会产生意外结果,这也是不鼓励直接在顶级容器上扩展或管理 UI 的另一个原因。

首先使用 JPanel 作为基本 UI 组件,然后使用 CardLayout管理 View 之间的切换。

将每个 View 分离到它自己的类中(从 JPanel 或类似的东西扩展)以便于管理

关于java - JFrame 不更新其内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34866170/

相关文章:

java.lang.NoSuchMethodError : com. google.common.base.Preconditions.checkState(ZLjava/lang/String;) 与 Selenium、gradle 和 ChromeDriver

java - 如何在 Java 中将选定的列从数据库获取到 JTable

java - JTable 彩色行标题出现在表格未出现的位置

javascript - 如何在 Mithril.js 中叠加弹出 View ?

javascript - Kendo UI 数据源sync() 将不起作用

java - 使用 Junit4 比较 String[]

java - 如何在for循环中设置限制?

windows - 有没有一个图形化工具可以方便的查看git stash内容?

java - 从脚本填充内存 hsqldb 数据库

java - jTable更新按钮并添加新的