0
Graphics2D g4 = (Graphics2D) g.create();
g4.setColor(Color.BLUE);
g4.fillRect(180,500,45,-f);
g4.setFont (new Font("purisa", Font.PLAIN, 18));
g4.drawString("<$20", 180,520);

你好,

以上是我用来填充矩形的代码。F 是我从不同班级获得的变量。当我指定值时它工作正常,但是当我使用变量时它不起作用。

当程序打开时:

在此处输入图像描述

调整图像大小时(正常工作):

在此处输入图像描述

谢谢。

4

1 回答 1

1

我以前也遇到过这样的问题。我的猜测是变量 f 是尚未初始化的类的成员,EDT 在变量初始化之前绘制,当您调整大小(导致重新绘制)时,变量现在已初始化并且一切都正确绘制。这是一种竞争条件。

一个很容易验证这个猜测的方法是println(f)在方法中添加 a 来查看你第一次绘画时 f 的值是多少,以及调整大小时 f 的值是多少。

于 2013-09-09T11:12:35.300 回答