import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;

public class MovingRectangle extends JPanel implements ActionListener {
    double x = 50, y = 50;
    double dx = 3, dy = 2;
    double width = 100, height = 50;

    public MovingRectangle() {
	setBackground(Color.white);
    }
    
    public void actionPerformed(ActionEvent event) {
	x += dx;  y += dy;
	repaint();
    }

    public void paintComponent(Graphics gfx) {
	super.paintComponent(gfx);
	Graphics2D g = (Graphics2D) gfx;
	g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
			   RenderingHints.VALUE_ANTIALIAS_ON);
	
	g.draw(new Rectangle2D.Double(x, y, width, height));
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame("MovingRectangle");
	frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
	MovingRectangle mr = new MovingRectangle();
        mr.setPreferredSize(new Dimension(300, 200));
        frame.getContentPane().add(mr, BorderLayout.CENTER);

	JButton move = new JButton("Move");
	move.addActionListener(mr);
	JPanel buttonPanel = new JPanel();
	buttonPanel.add(move);
	frame.getContentPane().add(buttonPanel, BorderLayout.SOUTH);

        frame.pack();
        frame.show();
    }
}


    
