Easy to Learn Java: Programming Articles, Examples and Tips

Start with Java in a few days with Java Lessons or Lectures

Home

Code Examples

Java Tools

More Java Tools!

Java Forum

All Java Tips

Books

Submit News
Search the site here...
Search...
 
Search the JavaFAQ.nu
1000 Java Tips ebook

1000 Java Tips - Click here for the high resolution copy!1000 Java Tips - Click here for the high resolution copy!

Java Screensaver, take it here

Free "1000 Java Tips" eBook is here! It is huge collection of big and small Java programming articles and tips. Please take your copy here.

Take your copy of free "Java Technology Screensaver"!.

Easy Learn Java: Programming Articles, Examples and Tips - Page 432


Previous 1060 Stories (530 Pages, 2 Per Page) Next

Menus

Go to all tips in Java Notes by Fred Swartz

Types of menus

Think of a menu as a way to arrange buttons. There are several types.

  • Dropdown menus hang down from the menu bar at the top of a window.
  • Popup menus appear when the user clicks, eg with the right mouse button, on a component that can handle a popup request.
  • Combo boxes are like menus that always shows one item. Similary, there are lists and radio buttons.

Dropdown menus: JMenuBar, JMenu, and JMenuItem

A menu bar can be added to the top of any top-level containers, eg, JFrame, JApplet, or JDialog. Note that a menu bar can not be added to JPanel.

Dropdown menus have three parts:

  1. JMenuBar is positioned across the top of a container (eg a JFrame, JPanel, or JApplet). It's placed above the content pane, so does not use the container's layout. Add menus to the menubar.
  2. JMenu is a vertical list of menu items.
  3. JMenuItem and Separators are added to each menu. Menu items are usually strings, but can also have icons, checkboxes, or hierarchical submenus.

Menus and Menu Items are Buttons!

It is easy to see how menu items are buttons that appear when a menu appears. But the menu names in the menu bar are also buttons. When you press on these "buttons", they create a popup menu that you see as a dropdown menu.


Example - MenuDemo

The following program creates a simple menu. It doesn't do anything useful.

The main program

Code:

<p>// File   : menus/MenuDemo.java
// Purpose: Simple demo of building menus.  main program.
// Author : Fred Swartz
// Date   : 2000-04-26 (Rota), 2002-05-01 (Sicilia), 2005-02-08
(Pfalz)

import javax.swing.*;

/////////////////////////////////////////////////////////////////// MenuDemo
public class MenuDemo {
   
//================================================================= main
    public static void main(String[] args) {
        JFrame win = new JFrame("MenuDemo");
       
win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        //... Create the GUI component
(JPanel), which
        //    also contains a
method to create a menubar.
        MenuDemoGUI content = new
MenuDemoGUI();
        win.setContentPane(content);
        <span class="hilite">
win.setJMenuBar(content.createMenubar());</span>

        win.pack();
        win.setVisible(true);
    }
}
 

The GUI

Code:

<p>// File   : menus/MenuDemoGUI.java
// Purpose: GUI for menu demo.  Subclasses JPanel and defines a method
//          which generates
menubar.
// Author : Fred Swartz
// Date   : 2000-04-26 (Rota), 2002-05-01 (Sicilia), 2005-02-08
(Pfalz)

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

/////////////////////////////////////////////////////////////// MenuDemoGUI
class MenuDemoGUI extends JPanel {
    JTextArea m_editArea = new JTextArea(20, 50);

    //... <span class="hilite">Menuitems</span> are buttons, so
should be instance variables
    //    so they can be en-/disabled by various
actions.
    JMenuItem m_openItem = new JMenuItem("Open"); // create new
menu item
    JMenuItem m_quitItem = new JMenuItem("Quit"); // another menu
item
    JMenuItem m_copyItem = new JMenuItem("Copy");
    JMenuItem m_pasteItem= new JMenuItem("Paste");

    //==========================================================
constructor
    public MenuDemoGUI() {
        //... <span class="hilite">Add
listeners to menu items</span>
        m_openItem.addActionListener(new
OpenAction());
        m_quitItem.addActionListener(new
QuitAction());
        //... Copy and Paste don't have
listeners yet, so disable them.
        m_copyItem.setEnabled(false);
        m_pasteItem.setEnabled(false);

        //... Add the single component.
        setLayout(new BorderLayout());
        add(m_editArea, BorderLayout.CENTER);
    }


    //====================================================
createMenubar
    // It's common to write a method that produces the menubar.
    // There are two reasons for this.
    // First, it gives a little better organization to the
program
    //        and doesn't mix
content pane and menu construction.
    // Second, it can be defined wherever you want, so that it
can be
    //        put in a JPanel
subclass (as here), or elsewhere.
    <span class="hilite">JMenuBar createMenubar()</span> {
        //... Menubar, menus, menu items. 
Use indentation to show structure.
        JMenuBar menubar = new JMenuBar(); 
// declare and create new menu bar
            JMenu
fileMenu = new JMenu("File");// declare and create new menu
               
menubar.add(fileMenu);        // add the menu
to the menubar
               
fileMenu.add(m_openItem); // add the menu item to the menu
               
fileMenu.addSeparator();  // add separator line to menu
               
fileMenu.add(m_quitItem);
            JMenu
editMenu = new JMenu("Edit");
               
menubar.add(editMenu);
               
editMenu.add(m_copyItem);
               
editMenu.add(m_pasteItem);
        return menubar;
    }


    /////////////////////////////////////////////////////////////
OpenAction
    class OpenAction implements ActionListener {
        public void
actionPerformed(ActionEvent e) {
           
JOptionPane.showMessageDialog(null, "Sorry, can't open anything");
        }
    }

    /////////////////////////////////////////////////////////////
QuitAction
    class QuitAction implements ActionListener {
        public void
actionPerformed(ActionEvent e) {
           
System.exit(0);  // terminate this program
        }
    }
}
 


7110 bytes more | comments? | Printer Friendly Page  Send to a Friend | Score: 0
Posted by jalex on Friday, January 27, 2006 (18:00:00) (2744 reads)

Question: What is difference between sets and lists?

Go to all tips in General Java

Answer: Unlike sets, lists typically allow duplicate elements. More formally, lists typically allow pairs of elements e1 and e2 such that e1.equals(e2), and they typically allow multiple null elements if they allow null elements at all. It is not inconceivable that someone might wish to implement a list that prohibits duplicates, by throwing runtime exceptions when the user attempts to insert them, but we expect this usage to be rare.



comments? | Printer Friendly Page  Send to a Friend | Score: 4
Posted by jalex on Thursday, January 26, 2006 (00:00:00) (2428 reads)

Previous 1060 Stories (530 Pages, 2 Per Page) Next

530| 529| 528| 527| 526| 525| 524| 523| 522| 521| 520| 519| 518| 517| 516| 515| 514| 513| 512| 511| 510| 509| 508| 507| 506| 505| 504| 503| 502| 501| 500| 499| 498| 497| 496| 495| 494| 493| 492| 491| 490| 489| 488| 487| 486| 485| 484| 483| 482| 481| 480| 479| 478| 477| 476| 475| 474| 473| 472| 471| 470| 469| 468| 467| 466| 465| 464| 463| 462| 461| 460| 459| 458| 457| 456| 455| 454| 453| 452| 451| 450| 449| 448| 447| 446| 445| 444| 443| 442| 441| 440| 439| 438| 437| 436| 435| 434| 433|
432
| 431| 430| 429| 428| 427| 426| 425| 424| 423| 422| 421| 420| 419| 418| 417| 416| 415| 414| 413| 412| 411| 410| 409| 408| 407| 406| 405| 404| 403| 402| 401| 400| 399| 398| 397| 396| 395| 394| 393| 392| 391| 390| 389| 388| 387| 386| 385| 384| 383| 382| 381| 380| 379| 378| 377| 376| 375| 374| 373| 372| 371| 370| 369| 368| 367| 366| 365| 364| 363| 362| 361| 360| 359| 358| 357| 356| 355| 354| 353| 352| 351| 350| 349| 348| 347| 346| 345| 344| 343| 342| 341| 340| 339| 338| 337| 336| 335| 334| 333| 332| 331| 330| 329| 328| 327| 326| 325| 324| 323| 322| 321| 320| 319| 318| 317| 316| 315| 314| 313| 312| 311| 310| 309| 308| 307| 306| 305| 304| 303| 302| 301| 300| 299| 298| 297| 296| 295| 294| 293| 292| 291| 290| 289| 288| 287| 286| 285| 284| 283| 282| 281| 280| 279| 278| 277| 276| 275| 274| 273| 272| 271| 270| 269| 268| 267| 266| 265| 264| 263| 262| 261| 260| 259| 258| 257| 256| 255| 254| 253| 252| 251| 250| 249| 248| 247| 246| 245| 244| 243| 242| 241| 240| 239| 238| 237| 236| 235| 234| 233| 232| 231| 230| 229| 228| 227| 226| 225| 224| 223| 222| 221| 220| 219| 218| 217| 216| 215| 214| 213| 212| 211| 210| 209| 208| 207| 206| 205| 204| 203| 202| 201| 200| 199| 198| 197| 196| 195| 194| 193| 192| 191| 190| 189| 188| 187| 186| 185| 184| 183| 182| 181| 180| 179| 178| 177| 176| 175| 174| 173| 172| 171| 170| 169| 168| 167| 166| 165| 164| 163| 162| 161| 160| 159| 158| 157| 156| 155| 154| 153| 152| 151| 150| 149| 148| 147| 146| 145| 144| 143| 142| 141| 140| 139| 138| 137| 136| 135| 134| 133| 132| 131| 130| 129| 128| 127| 126| 125| 124| 123| 122| 121| 120| 119| 118| 117| 116| 115| 114| 113| 112| 111| 110| 109| 108| 107| 106| 105| 104| 103| 102| 101| 100| 99| 98| 97| 96| 95| 94| 93| 92| 91| 90| 89| 88| 87| 86| 85| 84| 83| 82| 81| 80| 79| 78| 77| 76| 75| 74| 73| 72| 71| 70| 69| 68| 67| 66| 65| 64| 63| 62| 61| 60| 59| 58| 57| 56| 55| 54| 53| 52| 51| 50| 49| 48| 47| 46| 45| 44| 43| 42| 41| 40| 39| 38| 37| 36| 35| 34| 33| 32| 31| 30| 29| 28| 27| 26| 25| 24| 23| 22| 21| 20| 19| 18| 17| 16| 15| 14| 13| 12| 11| 10| 9| 8| 7| 6| 5| 4| 3| 2| 1|


Home Code Examples Java Forum All Java Tips Books Submit News, Code... Search... Offshore Software Tech Doodling

RSS feed Java FAQ RSS feed Java FAQ News     

    RSS feed Java Forums RSS feed Java Forums

All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest 1999-2006 by Java FAQs Daily Tips.

Interactive software released under GNU GPL, Code Credits, Privacy Policy