Java Button Class Example

JBUTTON

Java Swing Tutorial Explaining the JButton Component. The abstract class AbstractButton extends class JComponent and provides a foundation for a family of button classes, including JButton. A button is a component the user clicks to trigger a specific action.

There are several types of buttons in Java, all are subclasses of AbstractButton.

  • command buttons: is created with class JButton. It generates ActionEvent.
  • toggle buttons: have on/off or true/false values.
  • check boxes: a group of buttons. It generates ItemEvent.
  • radio buttons: a group of buttons in which only one can be selected. It generates ItemEvent.

JBUTTON SOURCE CODE

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.net.URL;
import javax.swing.AbstractButton;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class JButtonDemo extends JPanel implements ActionListener {

	protected static JButton jbnLeft, jbnMiddle, jbnRight;
	public JButtonDemo() {
		// Create Icons that can be used with the jButtons
		ImageIcon leftButtonIcon = createImageIcon("rightarrow.JPG");
		ImageIcon middleButtonIcon = createImageIcon("java-swing-tutorial.JPG");
		ImageIcon rightButtonIcon = createImageIcon("leftarrow.JPG");
		jbnLeft = new JButton("Disable centre button", leftButtonIcon);
		jbnLeft.setVerticalTextPosition(AbstractButton.CENTER);
		jbnLeft.setHorizontalTextPosition(AbstractButton.LEADING);
		jbnLeft.setMnemonic(KeyEvent.VK_D);
		// Alt-D clicks the button
		jbnLeft.setActionCommand("disable");
		jbnLeft.setToolTipText("disable the Centre button."); // Adding Tool
									// tips
		jbnMiddle = new JButton("Centre button", middleButtonIcon);
		jbnMiddle.setVerticalTextPosition(AbstractButton.BOTTOM);
		jbnMiddle.setHorizontalTextPosition(AbstractButton.CENTER);
		jbnMiddle.setMnemonic(KeyEvent.VK_M);
		// Alt-M clicks the button
		jbnMiddle.setToolTipText("Centre button");
		jbnRight = new JButton("Enable centre button", rightButtonIcon);
		// Use the default text position of CENTER, TRAILING (RIGHT).
		jbnRight.setMnemonic(KeyEvent.VK_E);
		// Alt-E clicks the button
		jbnRight.setActionCommand("enable");
		jbnRight.setEnabled(false);
		// Disable the Button at creation time
		// Listen for actions on Left and Roght Buttons
		jbnLeft.addActionListener(this);
		jbnRight.addActionListener(this);
		jbnRight.setToolTipText("Enable the Centre button.");
		// Add Components to the frame, using the default FlowLayout.
		add(jbnLeft);
		add(jbnMiddle);
		add(jbnRight);
	}
	public void actionPerformed(ActionEvent e) {
		if ("disable".equals(e.getActionCommand())) {
			jbnMiddle.setEnabled(false);
			jbnLeft.setEnabled(false);
			jbnRight.setEnabled(true);
		} else {
			jbnMiddle.setEnabled(true);
			jbnLeft.setEnabled(true);
			jbnRight.setEnabled(false);
		}
	}
	// Returns an ImageIcon, or null if the path was invalid.
	protected static ImageIcon createImageIcon(String path) {
		URL imgURL = JButtonDemo.class.getResource(path);
		if (imgURL != null) {
			return new ImageIcon(imgURL);
		} else {
			System.err.println("Couldn't find image in system: " + path);
			return null;
		}
	}
	// Create the GUI and show it.
	private static void createGUI() {
		JFrame.setDefaultLookAndFeelDecorated(true);
		// Create and set up the frame.
		JFrame frame = new JFrame("jButton usage demo");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		// Create and set up the content pane.
		JButtonDemo buttonContentPane = new JButtonDemo();
		buttonContentPane.setOpaque(true); // content panes must be opaque
		frame.getRootPane().setDefaultButton(jbnLeft);
		frame.setContentPane(buttonContentPane);
		// Display the window.
		frame.pack();
		frame.setVisible(true);
	}
	public static void main(String[] args) {
		javax.swing.SwingUtilities.invokeLater(new Runnable() {

			public void run() {
				createGUI();
			}
		});
	}
}

Output

Download jButton Source Code

ANOTHER EXAMPLE: JBUTTON SOURCE CODE

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

public class JButtonDemo2 {

	JFrame jtfMainFrame;
	JButton jbnButton1, jbnButton2;
	JTextField jtfInput;
	JPanel jplPanel;
	public JButtonDemo2() {
		jtfMainFrame = new JFrame("Which Button Demo");
		jtfMainFrame.setSize(50, 50);
		jbnButton1 = new JButton("Button 1");
		jbnButton2 = new JButton("Button 2");
		jtfInput = new JTextField(20);
		jplPanel = new JPanel();
		jbnButton1.setMnemonic(KeyEvent.VK_I); //Set ShortCut Keys
		jbnButton1.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {
				jtfInput.setText("Button 1!");
			}
		});
		jbnButton2.setMnemonic(KeyEvent.VK_I);
		jbnButton2.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {
				jtfInput.setText("Button 2!");
			}
		});
		jplPanel.setLayout(new FlowLayout());
		jplPanel.add(jtfInput);
		jplPanel.add(jbnButton1);
		jplPanel.add(jbnButton2);
		jtfMainFrame.getContentPane().add(jplPanel, BorderLayout.CENTER);
		jtfMainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		jtfMainFrame.pack();
		jtfMainFrame.setVisible(true);
	}
	public static void main(String[] args) {
		// Set the look and feel to Java Swing Look
		try {
			UIManager.setLookAndFeel(UIManager
					.getCrossPlatformLookAndFeelClassName());
		} catch (Exception e) {
		}
		JButtonDemo2 application = new JButtonDemo2();
	}
}

Output

Download jButton Source Code

JAVA JBUTTON HIERARCHY

javax.swing
Class JButton 
java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.AbstractButton
javax.swing.JButton
All Implemented Interfaces: 
Accessible, ImageObserver, ItemSelectable, MenuContainer, Serializable, SwingConstants
Direct Known Subclasses:
BasicArrowButton, MetalComboBoxButton

JBUTTON CONSTRUCTOR

JButton()
Creates a button with no set text or icon.

JButton(Action a)
Creates a button where properties are taken from the Action supplied.

JButton(Icon icon)
Creates a button with an icon.

JButton(String text)
Creates a button with text.

JButton(String text, Icon icon)
Creates a button with initial text and an icon.

Like us on Facebook