我一直在努力让我的 JFrame 重新绘制其内容。在将新组件添加到 JFrame 中后,我尝试同时使用 revaluate() 和 repaint() 方法,但我没有看到框架发生变化。
当用户单击顶部 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/