我正在玩一些 Java 图形类,我只是想知道——什么时候需要调用该方法repaint()
?我尝试将其注释掉,但它似乎并没有影响我的输出 GUI。不过,我已经看到它在我读过的 Java GUI 代码中使用了很多。有人介意解释什么时候使用它,什么时候不使用它吗?
4 回答
在大多数 Swing 应用程序中从来没有真正需要它,因为它们会自动处理它(用于常见操作,例如更改按钮上的文本值和向列表框添加数据)。
通常,只有在您进行了某种更改时,swing 才会自动拾取 - 例如,您没有使用布局管理器并且正在手动调整组件的大小(因为通常布局管理器会在必要时重新绘制其组件) .
刷新视图(组件),因此每当您对repaint()
组件进行任何更改时,都必须调用它。例如,如果您旋转图形组件,则必须调用 以repaint()
查看包含组件的更改
我唯一能想到的东西:
new Thread() {
@Override
public void run() {
while (ClassName.this.isVisible()) {
ClassName.this.updateStatusLabel();
ClassName.this.validate();
ClassName.this.repaint(50L);
try {
Thread.sleep(1000);
} catch (final InterruptedException e) {
Log.log(e);
}
}
}
}.start();
假设您在 JDialog 的构造函数中有上述代码。updateStatusLabel所做的是检查一个布尔变量,无论是公共的还是可通过方法设置的,并将基础中的 JLabel 的图标设置为此类布尔变量。如果您不验证并重新绘制 GUI,则在引发另一个事件(很可能是用户触发的事件)之前,不会显示修改。而且,如果用户正在等待标签显示某个图标,比方说,它表明设备是否可以通过 Internet 访问,他/她将永远不会进行交互(或者,至少,您正在延迟交互非常)。
当您启动您的应用程序时,您“绘制”了您的 GUI。
repaint()
当你想重新绘制你的 GUI 时,你需要调用,因为你已经改变了里面的东西。
如果要删除按钮,则需要将其删除(或使其不可见),然后需要调用validate()
或repaint()
重新计算(重新绘制)GUI。