0

我的班级组件有问题。问题是我的椭圆没有改变它们的颜色。if 函数在 Counter 类中观察 OVF 标志。当 OVF=true 时,椭圆应该是红色的,而当 OVF=false 时,椭圆应该是白色的。在我的 GUI 中,我只能看到红色椭圆(即使 OVF=false)。我尝试添加 repaint() 命令,但红色椭圆只开始闪烁。这是我的代码:

import java.awt.*;
import javax.swing.*;
import java.util.Observable;


public class Komponent extends JComponent
{
Counter counter3;
public Komponent()
{
    counter3=new Counter();
}
public void paint(Graphics g) 
{
 Graphics2D dioda = (Graphics2D)g;
 int x1 = 85;
 int x2 = 135;
 int y = 3;
 int width = (getSize().width/9)-6;
 int height = (getSize().height-1)-6;

 if (counter3.OVF = true)
 {
 dioda.setColor(Color.RED);
 dioda.fillOval(x1, y, width, height);
 dioda.fillOval(x2, y, width, height);
 }
if (counter3.OVF = false)
{
 dioda.setColor(Color.WHITE);
 dioda.fillOval(x1, y, width, height);
 dioda.fillOval(x2, y, width, height);
}
}
public static void main(String[] arg)
{
 new Komponent();
}
}

该代码有什么问题?

4

1 回答 1

0

如果应该是:

if (counter3.OVF == true) { // watch out for = and ==
    // red
}
if (counter3.OVF == false) {
    // white
}

或更简单:

if (counter3.OVF) {
    // red
} else {
    // white
}

或者最简单的:

dioda.setColor(counter3.OVF ? Color.RED : Color.WHITE);
dioda.fillOval(x1, y, width, height);
dioda.fillOval(x2, y, width, height);
于 2013-05-15T10:50:20.087 回答