我正在尝试使用Timer和JFrame以及JComponent编写一个设计日出动画的程序。 Graphics2D的对象是将在JFrame上移动的太阳。我的问题是我不确定在哪里放置Timer并移动Graphicc2D!这是我到目前为止在JFrame中放置图像然后将太阳放在该图像上所做的工作。请告诉我在哪里可以移动太阳。我应该在哪里定义Timer类?在JFrame或JComponent或主类?
public class Main(){
public static void main(String[] args){
myFrame frame = new myFrame();
}
}
class myFrame extends JFrame
{
public myFrame()
{
Draw component = new Draw();
add(component);
}
}
class Draw extends JComponent
{
public Draw()
{
//Read the image here
//set the newImage
}
public void paintComponent(Graphics g)
{
Graphics2D g2 = (Graphics2D) g;
g2.drawImage(newImage, 0, 0, null);
g2.fill(new Ellipse2D.Double(x,y,20,20));
//For the sunrise I need to change x,y during the Timer class!!
}
}
答案 0 :(得分:4)
这应该做:
int x, y;
Timer timer = new Timer(50, new ActionListener(){
public void actionPerformed(ActionEvent evt){
// update x and y
repaint();
}
});
不要忘记启动计时器,(在构造函数中最好这样做)。