JButton listener FAQ: A common Java JButton
question is "How do I add a listener to a JButton?", or the equivalent, "How can I tell when a JButton is pressed?"
JButton listener solution
In short, you typically want to add an ActionListener
to a JButton
, as shown in the following source code snipet:
JButton showDialogButton = new JButton("Text Button"); showDialogButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // display/center the jdialog when the button is pressed JDialog d = new JDialog(frame, "Hello", true); d.setLocationRelativeTo(frame); d.setVisible(true); } });
You then put the code you want to run when the button is pressed in the actionPerformed
method of the ActionListener
. There are several ways to actually implement this, including the following:
- Implement it as shown above
- Have your class implement an ActionListener
- Create a separate class as an ActionListener, i.e., in this example naming it something like DisplayJButtonActionListener
There are other ways to do this, but those are common approaches. As a warning, in a large application you're definitely going to want an organized approach.
A complete JButton listener example
I usually like to provide complete source code examples, and to that end, here's a complete Java class that shows this JButton listener/pressed approach:
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class JButtonListenerExample { static JFrame frame; public static void main(String[] args) { // schedule this for the event dispatch thread (edt) SwingUtilities.invokeLater(new Runnable() { public void run() { displayJFrame(); } }); } static void displayJFrame() { frame = new JFrame("Our JButton listener example"); // create our jbutton JButton showDialogButton = new JButton("Click Me"); // add the listener to the jbutton to handle the "pressed" event showDialogButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // display/center the jdialog when the button is pressed JDialog d = new JDialog(frame, "Hello", true); d.setLocationRelativeTo(frame); d.setVisible(true); } }); // put the button on the frame frame.getContentPane().setLayout(new FlowLayout()); frame.add(showDialogButton); // set up the jframe, then display it frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); frame.setPreferredSize(new Dimension(300, 200)); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); } }
I hope all of this JButton listener/pressed example code is helpful.
More JButton and ActionListener information
For more information on the JButton and ActionListener classes, check out these Javadoc pages: