我的Java中的Component有问题。当我将OVF标志设置为true时,Rect应为红色(255,0,0),如果我将OVF标志设置为false,则Rect应为蓝色(0,0,255)。问题是我在GUI中只能看到蓝色矩形(即使OVF标志设置为true)。我应该在这段代码中更改什么?
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.*;
import javax.swing.*;
public class Komponent2 extends JComponent implements ActionListener
{
Timer tm = new Timer(10, this);
int x =30;
int y =0, y2 = 8;
Counter counter3;
Color Kolor = new Color(255,255,255);
public void paintComponent(Graphics g)
{
counter3=new Counter();
super.paintComponent(g);
g.setColor(Kolor);
g.fillRect(y,30,x,30);
tm.start();
}
public void actionPerformed(ActionEvent e)
{
if(y<0 || y>300)
y2=-y2;
y=y + y2;
if (counter3.OVF==true)
Kolor = new Color (255,0,0);
if (counter3.OVF==false)
Kolor = new Color (0,0,255);
repaint ();
}
}
感谢您的帮助。
答案 0 :(得分:1)
在包含计数器初始化的Komponent2
类中创建一个构造函数,然后启动Timer
。这将阻止创建Counter
的多个实例。同时从Timer
方法移动paintComponent
,以便每次重绘都不会重新启动。
public Komponent2() {
counter3 = new Counter();
}
public void init() {
tm.start();
}