-1

我的 Java 组件有问题。当我将 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 ();
}
}

谢谢你帮助我。

4

1 回答 1

1

在包含计数器初始化的类中创建一个构造Komponent2函数并启动Timer. 这将防止Counter创建多个实例。还要TimerpaintComponent方法中移动,以便它不会在每次重绘时重新启动。

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

public void init() {
   tm.start();
}
于 2013-05-15T21:49:49.447 回答