Computer Science 523
Advanced Programming
Summer 2014, The College of Saint Rose
ButtonClickCounter Demo
A working demo of ButtonClickCounter will appear below. Click inside the applet to interact with it.
ButtonClickCounter BlueJ Project
Click here to download a BlueJ project for ButtonClickCounter.
ButtonClickCounter Source Code
The Java source code for ButtonClickCounter is below. Click on a file name to download it.
/*
* Example ButtonClickCounter: a JButton and a JLabel that
* we'll use to track the number of times the button has been
* pressed.
*
* Jim Teresco, The College of Saint Rose, CSC 523, Summer 2014
*
* $Id: ButtonClickCounter.java 2379 2014-06-17 03:52:55Z terescoj $
*/
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JLabel;
public class ButtonClickCounter extends JApplet implements ActionListener {
// Just as with other custom classes, we can introduce instance
// variables that have a class scope and which will retain their
// values throughout the life of this class
private int clickCount;
private JLabel clickCountLabel;
public void init() {
Container contentPane = getContentPane();
// In this init method, we'll add a JLabel and a JButton to our pane.
// Note that we only need the JButton reference within the init method,
// so it is a local variable, but we'll need the JLabel later, so
// it is an instance varable.
JButton button = new JButton("Press Here!");
contentPane.add(button, BorderLayout.SOUTH);
// The key to event-driven programming: we tell the button who
// to tell when someone presses it. We specify an instance of
// a class that implements ActionListener, which means that the
// class is guaranteed to have an actionPerformed method. Here,
// we specify "this", as the current class implements ActionListener
// so we want the button to call the actionPerformed method of
// this class when it gets pressed.
button.addActionListener(this);
clickCount = 0;
clickCountLabel = new JLabel("0 clicks");
contentPane.add(clickCountLabel, BorderLayout.CENTER);
}
// This method is the one that will be called when the button is pressed.
// By stating "implements ActionPerformed" in the class header, we are
// promising Java that we'll be providing this exact method.
public void actionPerformed(ActionEvent e) {
// if someone presses the button, we'll increment our click counter
// and update the label to show the new count
clickCount++;
clickCountLabel.setText(clickCount + " clicks");
}
}