ActionEvent, ActionListener, and MouseListener
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
An action listener that prints a message.
*/
public class ButtonListener implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
System.out.println("You clicked me!!!!");
}
}
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
/**
This program demonstrates how to install an action listener.
*/
public class ButtonViewer
{
private static final int FRAME_WIDTH = 100;
private static final int FRAME_HEIGHT = 60;
public static void main(String[] args)
{
JFrame frame = new JFrame();
JButton button = new JButton("Click here if you dare!");
frame.add(button);
ActionListener listener = new ButtonListener();
button.addActionListener(listener);
frame.setSize(FRAME_WIDTH, FRAME_HEIGHT);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Ellipse2D;
import javax.swing.JComponent;
/**
This component displays a circle that can be moved.
*/
public class ShapeComponent extends JComponent
{
private static final int SQUARE_X = 100;
private static final int SQUARE_Y = 100;
private static final int SQUARE_WIDTH = 50;
private static final int SQUARE_HEIGHT = 50;
private Ellipse2D.Double circle;
public ShapeComponent()
{
// The circle that the paintComponent method draws
circle = new Ellipse2D.Double(SQUARE_X, SQUARE_Y, SQUARE_WIDTH, SQUARE_HEIGHT);
}
public void paintComponent(Graphics g)
{
Graphics2D g2 = (Graphics2D) g;
g2.draw(circle);
}
/**
Moves the rectangle to the given location.
@param x the x-position of the new location
@param y the y-position of the new location
*/
public void moveTo(int x, int y)
{
circle = new Ellipse2D.Double(x, y, SQUARE_WIDTH, SQUARE_HEIGHT);
repaint();
}
}
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import java.awt.Color;
/**
This program displays a ShapeComponent.
*/
public class ShapeComponentViewer
{
private static final int FRAME_WIDTH = 300;
private static final int FRAME_HEIGHT = 400;
public static void main(String[] args)
{
final ShapeComponent component = new ShapeComponent();
// Add mouse press listener
class MousePressListener implements MouseListener
{
public void mousePressed(MouseEvent event)
{
int x = event.getX();
int y = event.getY();
component.moveTo(x, y);
}
// Do-nothing methods
public void mouseReleased(MouseEvent event) {}
public void mouseClicked(MouseEvent event) {}
public void mouseEntered(MouseEvent event) {}
public void mouseExited(MouseEvent event) {}
}
MouseListener listener = new MousePressListener();
component.addMouseListener(listener);
JFrame frame = new JFrame();
frame.getContentPane().setBackground(new Color(255, 0, 0));
frame.add(component);
frame.setSize(FRAME_WIDTH, FRAME_HEIGHT);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
Classwork:
Use the resources given to create a new GUI application, YI_CrazyCircle.java and its JFrame to generate random colors background and random filled circles wherever you click the mouse on the window. PLEASE INCLUDE SCREEN SHOT OF YOUR WORK.
Hint: To be able to also change the background at random create a rectangle of size equivalent to the JFrame. Instead of creating two public classes, create one inner class, the JComponnet inside main so it can have access to the JFrame size.