// Scott DeRuiter 3/6/2003
// CustomButton.java
// A simple "button" that reacts when pressed, implementing a
// MouseListener in a Swing Applet.
// 3/13/2013 Greenstein: changed from applet to JFrame
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class CustomButton implements MouseListener
{
private int xpos, ypos, buttonx, buttony, size;
private boolean button1pressed;
private JFrame frame;
private MyPanel canvas;
public CustomButton ()
{
xpos = ypos = 0;
buttonx = buttony = 30;
size = 100;
button1pressed = false;
}
public static void main(String[] args)
{
CustomButton cb = new CustomButton();
cb.Run();
}
public void Run()
{
// Create a frame to hold everything
frame = new JFrame ("CustomButton");
frame.setSize(500, 500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//frame.setBackground(Color.black); // only needed if frame is larger than panel
// Define panel to draw on
canvas = new MyPanel(); // create a panel to draw on
canvas.setBackground(Color.lightGray);
canvas.addMouseListener(this); // connects the MouseListerner to the panel window
// Put frame together
frame.getContentPane().add(canvas); // puts panel on frame
frame.setVisible(true);
}
class MyPanel extends JPanel
{
public void paintComponent(Graphics g)
{
super.paintComponent(g);
PlaceCircleButton ( g );
}
public void PlaceCircleButton ( Graphics g )
{
g.setColor ( Color.white );
g.fillOval ( buttonx - 5, buttony - 5, size + 10, size + 10 );
if ( button1pressed )
{
g.setColor ( Color.red );
int choice = (int)( Math.random() * 5 + 1 );
switch ( choice )
{
case 1: g.drawString ( "HEY!!!", 200, 90 ); break;
case 2: g.drawString ( "YIKES????", 200, 90 ); break;
case 3: g.drawString ( "Watch it, buster!", 200, 90 ); break;
case 4: g.drawString ( "That Hurts!!", 200, 90 ); break;
default: g.drawString ( "Try that again, buster!", 200, 90 ); break;
}
}
else
g.setColor ( Color.gray );
g.fillOval ( buttonx, buttony, size, size );
g.setColor ( Color.blue );
g.fillOval ( buttonx + 5, buttony + 5, size - 10, size - 10 );
}
}
public void mouseClicked ( MouseEvent e ) {}
public void mousePressed ( MouseEvent e )
{
xpos = e.getX();
ypos = e.getY();
if ( Math.sqrt ((xpos - 80)*(xpos - 80) + (ypos - 80)*(ypos - 80)) < 50 )
{
buttonx = 33;
buttony = 33;
size = 100;
button1pressed = true;
canvas.repaint ( );
}
}
public void mouseReleased ( MouseEvent e )
{
buttonx = 30;
buttony = 30;
size = 100;
button1pressed = false;
canvas.repaint ( );
}
public void mouseEntered ( MouseEvent e ) {}
public void mouseExited ( MouseEvent e ) {}
}
Back to Lesson 25 Examples
Back to Java Main Page