Java JButton class example

Beginner java tutorial site is rehosted with updated content and useful information under the domain name javabeginner.com

 

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.

JButton Source Code

Sept 18, 2006 by Hemanth

Swing JButton API Constructors

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

JButton

		
        
 

Download jButton Source Code

Another Example: JButton Source Code

Oct 10, 2006 by Hemanth
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

JButton

		
        
 

Download jButton Source Code