Sunday, December 19, 2010
Assignment 18 - MenuFrame / MenueTest
/*
Assignment 18
*/
// Fig. 22.5: MenuFrame.java
// Demonstrating menus.
import java.awt.Color;
import java.awt.Font;
import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.ItemListener;
import java.awt.event.ItemEvent;
import javax.swing.JFrame;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import javax.swing.ButtonGroup;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JMenuBar;
public class MenuFrame extends JFrame
{
private final Color colorValues[] =
{ Color.BLACK, Color.BLUE, Color.RED, Color.GREEN };
private JRadioButtonMenuItem colorItems[]; // color menue items
private JRadioButtonMenuItem fonts[]; // font menue items
private JCheckBoxMenuItem styleItems[]; // font style menue items
private JLabel displayJLabel; // displays sample text
private ButtonGroup fontButtonGroup; // manages font menu items
private ButtonGroup colorButtonGroup; // manages color menu items
private int style; // used to create style for font
// no-argument constructor set up GUI
public MenuFrame()
{
super( "Using JMenus" );
JMenu fileMenu = new JMenu( "File" ); // create file menu
fileMenu.setMnemonic( 'F' ); // set mnemonic to F
// create About... menu item
JMenuItem aboutItem = new JMenuItem( "About..." );
fileMenu.add( aboutItem ); // add about item to fiel menu
aboutItem.addActionListener(
new ActionListener() // anonymouse inner class
{
//display message dialog when user selects About...
public void actionPerformed( ActionEvent event )
{
JOptionPane.showMessageDialog( MenuFrame.this,
"This is an Example\nof using menus",
"About", JOptionPane.PLAIN_MESSAGE );
} // end method actionPerformed
} // end anonymous inner class
); // end call to addActionListener
JMenuItem exitItem = new JMenuItem( "Exit" ); // create exit item
exitItem.setMnemonic( 'x' ); // set mnemonic to x
fileMenu.add( exitItem ); // add exit item to fiel menu
exitItem.addActionListener(
new ActionListener() //anonymous inner class
{
// terminate application when user clicks exitItem
public void actionPerformed( ActionEvent event )
{
System.exit( 0 ); // exit application
} // end method actionPerformed
} // end anonymous inner class
); // end call to addActionListener
JMenuBar bar = new JMenuBar(); // create menu bar
setJMenuBar ( bar ); // add menu bar to application
bar.add( fileMenu ); // add fiel menu to menu bar
JMenu formatMenu = new JMenu( "Format" ); // create format menu
formatMenu.setMnemonic( 'r' ); // set mnemonic to r
// array listing string colors
String colors[] = { "Black", "Blue", "Red", "Green" };
JMenu colorMenu = new JMenu( "Color" ); // create color menu
colorMenu.setMnemonic( 'C' ); // set mnemonic to C
//create radio button menu items for colors
colorItems = new JRadioButtonMenuItem[ colors.length ];
colorButtonGroup = new ButtonGroup(); // manages colors
ItemHandler itemHandler = new ItemHandler(); // handler for colors
// create color radio button menu items
for ( int count = 0; count < colors.length; count++ )
{
colorItems[ count ] =
new JRadioButtonMenuItem( colors[ count ] ); // create item
colorMenu.add( colorItems[ count ] ); // add item to color menu
colorButtonGroup.add( colorItems[ count ] ); // add to group
colorItems[ count ].addActionListener( itemHandler );
} // end for
colorItems[ 0 ].setSelected( true ); // select first Color item
formatMenu.add( colorMenu ); // add color menu to format menu
formatMenu.addSeparator(); // add separator in menu
// array listing font names
String fontNames[] = { "Serif", "Monospaced", "SansSerif" };
JMenu fontMenu = new JMenu( "Font" ); // create font menu
fontMenu.setMnemonic( 'n' ); // set mnemonic to n
// create radio button menu items for font names
fonts = new JRadioButtonMenuItem[ fontNames.length ];
fontButtonGroup = new ButtonGroup(); // manages front names
// create Front radio button menu items
for ( int count = 0; count < fonts.length; count++ )
{
fonts[ count ] = new JRadioButtonMenuItem( fontNames[ count ] );
fontMenu.add( fonts[ count ] ); // add font to font menu
fontButtonGroup.add( fonts[ count ] ); // add to button group
fonts[ count ].addActionListener( itemHandler ); // add handler
} // end for
fonts[ 0 ].setSelected( true ); // select first Font menu item
fontMenu.addSeparator(); // add separator bar to font menu
String styleNames[] = { "Bold", "Italic" }; // names of styles
styleItems = new JCheckBoxMenuItem[ styleNames.length ];
StyleHandler styleHandler = new StyleHandler(); // style handler
// create style checkbox menu items
for ( int count = 0; count < styleNames.length; count++ )
{
styleItems[ count ] =
new JCheckBoxMenuItem( styleNames[ count ] ); // for style
fontMenu.add( styleItems[ count ] ); //add to font menu
styleItems[ count ].addItemListener( styleHandler ); // handler
} // end for
formatMenu.add( fontMenu ); // add Front menu to Format menu
bar.add( formatMenu ); // add Format menu to menu bar
// set up labe to display text
displayJLabel = new JLabel( "Sample Text", SwingConstants.CENTER );
displayJLabel.setForeground( colorValues[ 0 ] );
displayJLabel.setFont( new Font( "Serif", Font.PLAIN, 72 ) );
getContentPane().setBackground( Color.CYAN ); // set background
add( displayJLabel, BorderLayout.CENTER ); // add displayJLabel
} // end MenuFrame constructor
// inner class to handle action events from menu items
private class ItemHandler implements ActionListener
{
// process color and font selections
public void actionPerformed( ActionEvent event )
{
// process color selection
for ( int count = 0; count < colorItems.length; count++ ){
if ( colorItems[ count ].isSelected() )
{
displayJLabel.setForeground( colorValues[ count ] );
break;
} // end if
} // end for
// process font selection
for ( int count = 0; count < fonts.length; count++ )
{
if ( event.getSource() == fonts[ count ] )
{
displayJLabel.setFont(
new Font( fonts[ count ].getText(), style, 72 ) );
} // end if
} // end for
repaint(); // redraw application
} // end method actionPerformed
} // end class ItemHandler
// inner class to handle item events from check box menu items
private class StyleHandler implements ItemListener
{
// process font style selections
public void itemStateChanged( ItemEvent e )
{
style = 0; // initialize style
// check for bold selection
if (styleItems[ 0 ].isSelected() )
style += Font.BOLD; // add bold to style
// check for italic selection
if ( styleItems[ 1 ].isSelected() )
style += Font.ITALIC; // add italic to style
displayJLabel.setFont(
new Font( displayJLabel.getFont().getName(), style, 72 ) );
repaint(); // redraw application
} // end method itemStateChanged
} // end class StyleHandler
} // end class MenuFrame
//Fig. 22.6: MenuTest.java
//Testing javax.swing.JFrame;
import javax.swing.JFrame;
public class MenuTest
{
public static void main( String args[])
{
MenuFrame menuFrame = new MenuFrame(); // create MenuFrame
menuFrame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
menuFrame.setSize( 500, 200 ); // set frame size
menuFrame.setVisible( true ); // display frame
} // end main
} // end class Menu Test
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment