我正在学习图形部分,当我理解了paintComponent方法的作用时,我尝试了这个。我尝试绘制一个矩形并使用while循环,将其移过框架。但代码似乎没有运行。请注意我是新手,我所做的只是一个试验。
import java.awt.*;
import javax.swing.*;
public class RightFlowLayout extends Panel{
public static void main(String[]args)
{
JFrame frame=new JFrame("My");
Panel panel=new Panel();
frame.add(panel);
frame.setSize(600, 600);
frame.setVisible(true);
}
}
class Panel extends JPanel{
public int x=20;
public int y=20;
@Override
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
while(true)
{
g.fill3DRect(x, y, 50, 50, true);
x+=5;
y+=5;
}
}
}
答案 0 :(得分:2)
而不是无限循环尝试使用Swing Timer。
以下是示例代码:
int delay = 1000; //milliseconds
ActionListener taskPerformer = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
panel.repaint();
}
};
Timer timer=new Timer(delay, taskPerformer);
timer.setRepeats(true);
timer.start();