Java 为什么矩形不在框架上移动?
我正在学习图形部分,当我理解了paintComponent方法的作用后,我尝试了这个方法。我试着画一个矩形,然后使用while循环,将它在框架上移动。但代码似乎没有运行。请注意,我是一个新手,我所做的只是一次尝试Java 为什么矩形不在框架上移动?,java,swing,Java,Swing,我正在学习图形部分,当我理解了paintComponent方法的作用后,我尝试了这个方法。我试着画一个矩形,然后使用while循环,将它在框架上移动。但代码似乎没有运行。请注意,我是一个新手,我所做的只是一次尝试 import java.awt.*; import javax.swing.*; public class RightFlowLayout extends Panel{ public static void main(String[]args) {
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;
}
}
}
尝试使用,而不是无限循环 请看一看 以下是示例代码:
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();
找到一个
您正在像冠军一样阻止UI线程。很好的无限循环。删除那个while循环,看看会发生什么。谷歌“如何使用Swing定时器”来修复它。你需要创建一个辅助执行序列,并行,在编程中称为“线程”的概念。当原始线程(主线程、用户界面线程)继续在监视器上绘图时,辅助线程将更新X、Y值。编程不容易,学习曲线陡峭。如果你只是想解决这个问题以通过你的课程,只需遵循下面的答案。如果您想学习,那么是的,任何类型的严肃用户界面都使用多线程。