Button2
File: java/Button2/Main.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
/**
* Main program for Button2
*/
public class Main extends JFrame
implements ActionListener {
/** Miscellaneous "global" data, we keep here */
private Rectangle square = new Rectangle (100, 50, 50, 50);
private boolean filled = false; // currently filled or not?
/** Remember these for listener callbacks */
private MyCanvas canvas;
private JButton bleft, bright, bbigger, bsmaller, bfill;
public static void main (String [] args) {
new Main();
}
public Main () {
// Window setup
setSize (500, 500);
Container content = getContentPane();
content.setLayout (new BorderLayout());
setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
// Our canvas
canvas = new MyCanvas (this);
content.add (canvas, BorderLayout.CENTER);
// Control panel at bottom
JPanel controls = new JPanel ();
controls.setBorder (new LineBorder(Color.blue));
controls.setLayout (new FlowLayout());
content.add (controls, BorderLayout.SOUTH);
// First button, left arrow
bleft = new JButton ();
bleft.setIcon (new ImageIcon ("leftArrow.gif"));
bleft.addActionListener (this);
controls.add (bleft);
// Right arrow button
bright = new JButton ();
bright.setIcon (new ImageIcon ("rightArrow.gif"));
bright.addActionListener (this);
controls.add (bright);
// "Bigger" button
bbigger = new JButton ();
bbigger.setText ("Bigger");
bbigger.addActionListener (this);
controls.add (bbigger);
// "Smaller" button
bsmaller = new JButton ();
bsmaller.setText ("Smaller");
bsmaller.addActionListener (this);
controls.add (bsmaller);
// "Filled" button
bfill = new JButton ();
bfill.setText ("Filled");
bfill.addActionListener (this);
controls.add (bfill);
setVisible (true);
}
/**
* Canvas calls us to do the job, cause we keep the data
* We draw, according to current values of square and filled
*/
public void drawSquare (Graphics g) {
Graphics2D g2 = (Graphics2D) g;
if (filled) g2.fill (square);
else g2.draw (square);
}
/** Uses button ivars to decode */
public void actionPerformed (ActionEvent e) {
if (e.getSource()==bleft) {
square.x -= 10;
canvas.repaint ();
}
else if (e.getSource()==bright) {
square.x += 10;
canvas.repaint ();
}
else if (e.getSource()==bbigger) {
square.width += 10;
square.height += 10;
canvas.repaint ();
}
else if (e.getSource()==bsmaller) {
square.width -= 10;
square.height -= 10;
canvas.repaint ();
}
else if (e.getSource()==bfill) {
filled = ! filled;
canvas.repaint ();
// Also update button label
if (filled) bfill.setText ("Empty");
else bfill.setText ("Filled");
}
}
}
File: java/Button2/MyCanvas.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
/**
* Our canvas
*/
public class MyCanvas extends JComponent implements MouseListener {
private Main parent;
public MyCanvas (Main parent) {
this.parent = parent;
setBorder (new LineBorder(Color.blue));
addMouseListener (this);
}
/** We just call our parent, cause it keeps the data */
public void paintComponent (Graphics g) {
parent.drawSquare (g);
}
/** MouseListener callbacks */
public void mousePressed (MouseEvent event) {
System.out.println ("Mouse down at " + event.getPoint().x + ", " + event.getPoint().y);
}
public void mouseClicked (MouseEvent event) {}
public void mouseReleased (MouseEvent event) {}
public void mouseEntered (MouseEvent event) {}
public void mouseExited (MouseEvent event) {}
}