在这个程序中,我想绘制一系列交互形成网络的线条。每次计时器滴答作响,都会画一条线。因此,我不能在中super.paintComponent(g)
调用,paintComponent()
因为我需要出现前面的行。但是,我想设置背景颜色,据我所知,setBackground()
只有首先进行超级调用才能调用该方法。我不确定该fillRect
方法是否有效,因为它每次都会在旧线上绘制一个矩形。我尝试setBackground()
在构造函数中使用该方法,但它也不起作用。
这是我的代码:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class prettyWebPanel extends JPanel implements ActionListener {
Timer time = new Timer(100,this);
private Color colour1 = Color.black;
private Color colour2 = Color.white;
JButton start = new JButton("Start");
int j = 0;
public prettyWebPanel() {
setPreferredSize(new Dimension (550,550));
this.add(start);
start.addActionListener(this);
setBackground(colour1);
}
public void paintComponent(Graphics g) {
setBackground(colour1);
setForeground(colour2);
if (j<490) g.drawLine(20, 20+j, 20+j, 500);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == start) time.start();
else if (e.getSource() == time) {
j+=10;
repaint();
}
}
}