我正在尝试这个非常简单的代码。它运行但不显示动画。我是动画的新手,所以我不知道自己错过了什么。
package sample;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Sample extends JPanel implements ActionListener {
Timer tm = new Timer(5, this);
int x = 0, Velx = 5;
public void paint(Graphics g) {
g.setColor(Color.RED);
g.fillRect(x, 30, 50, 50);
tm.start();
}
public void actionPerformed(ActionEvent e) {
x = x + Velx;
repaint();
}
public static void main(String[] args) {
Sample X = new Sample();
JFrame a = new JFrame();
a.setTitle("Rectangle RED");
a.setSize(500,500);
a.setVisible(true);
}
}
答案 0 :(得分:1)
Sample X = new Sample();
X
永远不会添加到框架中。请参阅第一个提示(粗体部分),了解如何将X
添加到框架中。
其他提示:
Sample
应该@Override
getPreferredSize()
方法为画布返回合理的大小。然后,我们可以省略a.setSize(500,500);
,而不是 a.add(X); a.pack();
,以使帧格式正确,以显示渲染。Timer
应该在除绘画方法之外的某个地方开始!我去找建设者。JComponent
中的自定义绘画都应使用paintComponent(Graphics)
方法完成。super
方法,以确保通过绘制容器的BG和边框来删除先前的绘图。EachWordUpperCaseClass
,firstWordLowerCaseMethod()
,firstWordLowerCaseAttribute
,除非它是UPPER_CASE_CONSTANT
)并一致地使用它。JFrame a = new JFrame(); a.setTitle("Rectangle RED");
可缩短为JFrame a = new JFrame("Rectangle RED");