我正在玩Java图形类,我只是想知道 - 什么时候需要调用方法repaint()
?我试着将它评论出来,但它似乎并没有影响我的输出GUI。我已经看到它在我阅读过的Java GUI代码中使用了很多。有人会介意何时使用它以及何时不使用它?
答案 0 :(得分:1)
在大多数swing应用程序中从来没有必要,因为它们会自动处理它(对于常见操作,例如更改按钮上的文本值和将数据添加到列表框中)。
通常情况下,只有当你做出某种变化时才会自动获取摆动 - 例如,你没有使用布局管理器并且手动调整组件大小(因为通常布局管理器重新绘制它的组件必要的时候。)
答案 1 :(得分:1)
repaint()
刷新视图(组件),因此每当您对组件进行任何更改时,都必须调用它。例如,如果您旋转图形组件,则必须调用repaint()
才能查看包含组件的更改
答案 2 :(得分:0)
启动应用程序时,可以“绘制”GUI。
当您想要重新绘制GUI时,需要调用repaint()
,因为您已经更改了内容。
如果要删除按钮,则需要将其删除(或使其不可见),然后需要调用validate()
或repaint()
来重新计算(重新绘制)GUI。
答案 3 :(得分:0)
我能想到的唯一的东西:
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,则在另一个事件(很可能是用户触发的事件)被抛出之前,不会显示修改。并且,如果用户正在等待标签显示某个图标,因为,它说,它表明设备是否可以通过互联网访问,他/她将永远不会互动(或者,至少,你是在推迟互动这么多)。