This program uses a JMenuBar
to allow the user to choose a new image,
restore the display its initial blank state, or show an About dialog message. Below is
the program after opening an image
The original blank state (below) is restored by using the New
menu item.
The About menu item in the Help menu is show below
The program incorporates ImagePanel.java
.
MenuDemo3.java
import java.awt.*; import java.awt.event.*; import java.awt.geom.*; import javax.swing.*; import javax.swing.event.*; import java.io.*; import java.text.DecimalFormat; public class MenuDemo3 extends JFrame { //============================================================== fields JMenuBar menubar; ImagePanel panel = new ImagePanel(); //========================================================== constructor public MenuDemo3() { // (1) Create menu items and set their mnemonic, accelerator, enabled. JMenuItem newItem = new JMenuItem("New"); newItem.setMnemonic('N'); newItem.setAccelerator(KeyStroke.getKeyStroke("control N")); JMenuItem openItem = new JMenuItem("Open..."); openItem.setMnemonic('O'); openItem.setAccelerator(KeyStroke.getKeyStroke("control O")); JMenuItem m_exit = new JMenuItem("Exit"); JMenuItem m_about = new JMenuItem("About"); // (2) Build menubar, menus, and add menuitems. menubar = new JMenuBar(); // Create new menu bar JMenu fileMenu = new JMenu("File"); fileMenu.setMnemonic('F'); menubar.add(fileMenu); fileMenu.add(newItem); fileMenu.add(openItem); fileMenu.addSeparator(); fileMenu.add(m_exit); JMenu helpMenu = new JMenu("Help"); helpMenu.add(m_about); menubar.add(helpMenu); // (3) Add listeners to menu items newItem.addActionListener(actionEvent -> { panel.img=null; setTitle("MenuDemo3"); pack(); }); openItem.addActionListener(actionEvent -> { File f = ImagePanel.choose_image(); setTitle(f.getName()); panel.readImage(f); panel.setScale(); pack(); }); m_exit.addActionListener(actionEvent -> System.exit(0)); m_about.addActionListener(actionEvent -> JOptionPane.showMessageDialog(this," MenuDemo3\nwritten by John Loomis") ); // Set the JFrame's content pane and menu bar. setJMenuBar(menubar); add(panel); setLocation(100,100); pack(); setTitle("Menu Demo3"); } public static void main(String[] args) { MenuDemo3 win = new MenuDemo3(); EventQueue.invokeLater(()-> { win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //win.setSize(496,440); //win.pack(); //win.setLocationRelativeTo(null); // Center window. win.setVisible(true); }); } }
Maintained by John Loomis, updated Thu Mar 05 15:30:07 2020