Анимация: нарисовать зеленый квадрат, который будет двигаться от края до края окна - Java
Формулировка задачи:
Здравствуйте. Нужно нарисовать зеленый квадрат, который будет двигаться от края до края окна и повторять свое движение.
Заранее спасибо.
Решение задачи: «Анимация: нарисовать зеленый квадрат, который будет двигаться от края до края окна»
textual
Листинг программы
package rectanglemoving;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
/**
*
* @author Nicholas White
*/
public class RectangleMoving extends JFrame {
public RectangleMoving() {
initUI();
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new RectangleMoving().setVisible(true);
}
});
private void initUI() {
setContentPane(new Board());
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
package rectanglemoving;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JPanel;
import javax.swing.Timer;
/**
*
* @author Nicholas White
*/
public class Board extends JPanel implements ActionListener {
private int DELAY = 10;
int rectX = 20;
int rectY = 20;
Timer timer;
public Board() {
timer = new Timer(DELAY, this);
timer.start();
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(java.awt.Color.GREEN);
g.fillRect(rectX, rectY, 40, 40);
}
@Override
public void actionPerformed(ActionEvent e) {
moveRect();
repaint();
}
private void moveRect() {
rectX += 1;
if(rectX >= getParent().getWidth()){
rectX = 0;
}
}
}