5

我正在玩一些 Java 图形类,我只是想知道——什么时候需要调用该方法repaint()?我尝试将其注释掉,但它似乎并没有影响我的输出 GUI。不过,我已经看到它在我读过的 Java GUI 代码中使用了很多。有人介意解释什么时候使用它,什么时候不使用它吗?

4

4 回答 4

1

在大多数 Swing 应用程序中从来没有真正需要它,因为它们会自动处理它(用于常见操作,例如更改按钮上的文本值和向列表框添加数据)。

通常,只有在您进行了某种更改时,swing 才会自动拾取 - 例如,您没有使用布局管理器并且正在手动调整组件的大小(因为通常布局管理器会在必要时重新绘制其组件) .

于 2012-06-01T15:16:10.610 回答
1

刷新视图(组件),因此每当您对repaint()组件进行任何更改时,都必须调用它。例如,如果您旋转图形组件,则必须调用 以repaint()查看包含组件的更改

于 2012-06-01T15:20:37.203 回答
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,则在引发另一个事件(很可能是用户触发的事件)之前,不会显示修改。而且,如果用户正在等待标签显示某个图标,比方说,它表明设备是否可以通过 Internet 访问,他/她将永远不会进行交互(或者,至少,您正在延迟交互非常)。

于 2013-03-16T09:43:34.273 回答
0

当您启动您的应用程序时,您“绘制”了您的 GUI。

repaint()当你想重新绘制你的 GUI 时,你需要调用,因为你已经改变了里面的东西。

如果要删除按钮,则需要将其删除(或使其不可见),然后需要调用validate()repaint()重新计算(重新绘制)GUI。

于 2012-06-01T15:18:40.610 回答