1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
package swing.tests;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.geom.Rectangle2D;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;
public class AnimatedRectangle extends JPanel {
private Rectangle2D rect;
private Timer timer;
public AnimatedRectangle() {
rect = new Rectangle2D.Float(20,20,100,100);
timer = new Timer(20,new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
System.out.println("hello width: "+rect.getWidth());
if(rect.getWidth()> 0) {
rect.setRect(rect.getBounds2D().getX()+1, rect.getBounds2D().getY()+1, rect.getBounds2D().getWidth()-2, rect.getBounds2D().getHeight()-2) ;
} else {
timer.stop();
}
repaint();
}
});
timer.start();
}
@Override
protected void paintComponent(Graphics arg0) {
super.paintComponent(arg0);
System.out.println(rect);
Graphics2D g2d = (Graphics2D) arg0;
g2d.setPaint(Color.red);
g2d.fill(rect);
}
public static void main(String[] args) {
JFrame f = new JFrame();
f.add(new AnimatedRectangle());
f.setSize(400,300);
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.setVisible(true);
}
} |