Java中的repaint()方法

时间:2012-06-01 15:12:53

标签: java awt repaint

我正在玩Java图形类,我只是想知道 - 什么时候需要调用方法repaint()?我试着将它评论出来,但它似乎并没有影响我的输出GUI。我已经看到它在我阅读过的Java GUI代码中使用了很多。有人会介意何时使用它以及何时不使用它?

4 个答案:

答案 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,则在另一个事件(很可能是用户触发的事件)被抛出之前,不会显示修改。并且,如果用户正在等待标签显示某个图标,因为,它说,它表明设备是否可以通过互联网访问,他/她将永远不会互动(或者,至少,你是在推迟互动这么多)。