// This code example is from the following source:
//
// Book Title: Programming with Objects, A Comparative Presentation
// of Object-Oriented Programming with C++ and Java
//
// Chapter: Chapter 17 OO For Graphical User Interfaces, A Tour Of Three Toolkits
//
// Section: Section 17.13 Event Processing In AWT/Swing
//
//WindowWithButtons2.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class WindowWithButtons {
static JButton startButton;
static JButton greetingButton;
static JButton closeButton;
public static void main(String[] args)
{
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout( new GridLayout( 1, 3, 10, 0 ) );
ImageIcon icon1 = new ImageIcon( "images/smiley.gif" );
ImageIcon icon2 = new ImageIcon( "images/happyface.gif" );
startButton = new JButton("Start here" );
startButton.setToolTipText(
"Click to enable the other buttons." );
startButton.setMnemonic( KeyEvent.VK_S );
startButton.addActionListener( new ActionListener() { //(M)
public void actionPerformed( ActionEvent e ) {
greetingButton.setEnabled( true );
closeButton.setEnabled( true );
}
} );
buttonPanel.add( startButton );
greetingButton = new JButton( "Click for Greeting", icon1 );
greetingButton.setVerticalTextPosition(AbstractButton.BOTTOM );
greetingButton.setHorizontalTextPosition(
AbstractButton.CENTER);
greetingButton.setToolTipText( "First \"Start\","
+ " then click this to see greetings." );
greetingButton.setMnemonic( KeyEvent.VK_C );
greetingButton.addActionListener( new ActionListener() { //(N)
public void actionPerformed( ActionEvent e ) {
startButton.setEnabled( false );
System.out.println( "Good Morning to you!" );
}
} );
buttonPanel.add( greetingButton );
closeButton = new JButton( "Time to quit", icon2 );
closeButton.setToolTipText( "First \"Start\","
+ " then click here to close window." );
closeButton.setMnemonic(KeyEvent.VK_T);
closeButton.addActionListener( new ActionListener() { //(O)
public void actionPerformed( ActionEvent e ) {
System.out.println( "Good Bye!" );
System.exit( 0 );
}
} );
buttonPanel.add( closeButton );
greetingButton.setEnabled( false );
closeButton.setEnabled( false );
buttonPanel.setBorder(
BorderFactory.createEmptyBorder( 20, 20, 20, 20 ) );
JFrame f = new JFrame();
f.addWindowListener( new WindowAdapter() { //(P)
public void windowClosing( WindowEvent e ) { //(Q)
System.exit( 0 );
}
} );
f.getContentPane().add( buttonPanel );
f.setLocation( 100, 50);
f.pack();
f.setVisible( true );
}
}