MenuDemo3.java

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