JComponent更改条形颜色

时间:2013-05-15 21:12:22

标签: java swing colors jcomponent

我的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 ();
}
}

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

在包含计数器初始化的Komponent2类中创建一个构造函数,然后启动Timer。这将阻止创建Counter的多个实例。同时从Timer方法移动paintComponent,以便每次重绘都不会重新启动。

public Komponent2() {
   counter3 = new Counter();
}

public void init() {
   tm.start();
}