swing:menus_checkboxes_radio

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Previous revision
swing:menus_checkboxes_radio [2018/03/27 19:21]
swing:menus_checkboxes_radio [2018/03/27 20:21]
gthanos
Line 1: Line 1:
 +====== CheckBox Menu Items & RadioButton Menu Items ======
 +
 +Σε αναλογία με τα check box buttons και radio buttons μπορείτε να ορίσετε σε ένα μενού //CheckBox Menu Items// και //RadioButton Menu Items//. Δείτε το παρακάτω παράδειγμα χρήσης ενός τέτοιου μενού από το [[https://docs.oracle.com/javase/tutorial/uiswing/components/menu.html|site της Oracle]].
 +
 +Για την εκτέλεση του παρακάτω κώδικα θα χρειαστείτε το εικονίδιο [[https://docs.oracle.com/javase/tutorial/uiswing/examples/components/MenuLookDemoProject/src/components/images/middle.gif|middle.gif]].
 +
 +<code java MenuLookDemo.java>
 +import java.awt.*;
 +import java.awt.event.*;
 +import javax.swing.JMenu;
 +import javax.swing.JMenuItem;
 +import javax.swing.JCheckBoxMenuItem;
 +import javax.swing.JRadioButtonMenuItem;
 +import javax.swing.ButtonGroup;
 +import javax.swing.JMenuBar;
 +import javax.swing.KeyStroke;
 +import javax.swing.ImageIcon;
 +
 +import javax.swing.JPanel;
 +import javax.swing.JTextArea;
 +import javax.swing.JScrollPane;
 +import javax.swing.JFrame;
 +
 +/* MenuLookDemo.java requires middle.gif. */
 +
 +/*
 + * This class exists solely to show you what menus look like.
 + * It has no menu-related event handling.
 + */
 +public class MenuLookDemo {
 +  JTextArea output;
 +  JScrollPane scrollPane;
 +
 +  public JMenuBar createMenuBar() {
 +    JMenuBar menuBar;
 +    JMenu menu, submenu;
 +    JMenuItem menuItem;
 +    JRadioButtonMenuItem rbMenuItem;
 +    JCheckBoxMenuItem cbMenuItem;
 +
 +    //Create the menu bar.
 +    menuBar = new JMenuBar();
 +
 +    //Build the first menu.
 +    menu = new JMenu("A Menu");
 +    menu.setMnemonic(KeyEvent.VK_A);
 +    menu.getAccessibleContext().setAccessibleDescription(
 +        "The only menu in this program that has menu items");
 +    menuBar.add(menu);
 +
 +    //a group of JMenuItems
 +    menuItem = new JMenuItem("A text-only menu item",
 +                 KeyEvent.VK_T);
 +    //menuItem.setMnemonic(KeyEvent.VK_T); //used constructor instead
 +    menuItem.setAccelerator(KeyStroke.getKeyStroke(
 +        KeyEvent.VK_1, ActionEvent.ALT_MASK));
 +    menuItem.getAccessibleContext().setAccessibleDescription(
 +        "This doesn't really do anything");
 +    menu.add(menuItem);
 +
 +    ImageIcon icon = createImageIcon("middle.gif");
 +    menuItem = new JMenuItem("Both text and icon", icon);
 +    menuItem.setMnemonic(KeyEvent.VK_B);
 +    menu.add(menuItem);
 +
 +    menuItem = new JMenuItem(icon);
 +    menuItem.setMnemonic(KeyEvent.VK_D);
 +    menu.add(menuItem);
 +
 +    //a group of radio button menu items
 +    menu.addSeparator();
 +    ButtonGroup group = new ButtonGroup();
 +
 +    rbMenuItem = new JRadioButtonMenuItem("A radio button menu item");
 +    rbMenuItem.setSelected(true);
 +    rbMenuItem.setMnemonic(KeyEvent.VK_R);
 +    group.add(rbMenuItem);
 +    menu.add(rbMenuItem);
 +
 +    rbMenuItem = new JRadioButtonMenuItem("Another one");
 +    rbMenuItem.setMnemonic(KeyEvent.VK_O);
 +    group.add(rbMenuItem);
 +    menu.add(rbMenuItem);
 +
 +    //a group of check box menu items
 +    menu.addSeparator();
 +    cbMenuItem = new JCheckBoxMenuItem("A check box menu item");
 +    cbMenuItem.setMnemonic(KeyEvent.VK_C);
 +    menu.add(cbMenuItem);
 +
 +    cbMenuItem = new JCheckBoxMenuItem("Another one");
 +    cbMenuItem.setMnemonic(KeyEvent.VK_H);
 +    menu.add(cbMenuItem);
 +
 +    //a submenu
 +    menu.addSeparator();
 +    submenu = new JMenu("A submenu");
 +    submenu.setMnemonic(KeyEvent.VK_S);
 +
 +    menuItem = new JMenuItem("An item in the submenu");
 +    menuItem.setAccelerator(KeyStroke.getKeyStroke(
 +        KeyEvent.VK_2, ActionEvent.ALT_MASK));
 +    submenu.add(menuItem);
 +
 +    menuItem = new JMenuItem("Another item");
 +    submenu.add(menuItem);
 +    menu.add(submenu);
 +
 +    //Build second menu in the menu bar.
 +    menu = new JMenu("Another Menu");
 +    menu.setMnemonic(KeyEvent.VK_N);
 +    menu.getAccessibleContext().setAccessibleDescription(
 +        "This menu does nothing");
 +    menuBar.add(menu);
 +
 +    return menuBar;
 +  }
 +
 +  public Container createContentPane() {
 +    //Create the content-pane-to-be.
 +    JPanel contentPane = new JPanel(new BorderLayout());
 +    contentPane.setOpaque(true);
 +
 +    //Create a scrolled text area.
 +    output = new JTextArea(5, 30);
 +    output.setEditable(true);
 +    scrollPane = new JScrollPane(output);
 +
 +    //Add the text area to the content pane.
 +    contentPane.add(scrollPane, BorderLayout.CENTER);
 +
 +    return contentPane;
 +  }
 +
 +  /** Returns an ImageIcon, or null if the path was invalid. */
 +  protected static ImageIcon createImageIcon(String path) {
 +    java.net.URL imgURL = MenuLookDemo.class.getResource(path);
 +    if (imgURL != null) {
 +      return new ImageIcon(imgURL);
 +    } else {
 +      System.err.println("Couldn't find file: " + path);
 +      return null;
 +    }
 +  }
 +
 +  /**
 +   * Create the GUI and show it.  For thread safety,
 +   * this method should be invoked from the
 +   * event-dispatching thread.
 +   */
 +  private static void createAndShowGUI() {
 +    //Create and set up the window.
 +    JFrame frame = new JFrame("MenuLookDemo");
 +    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 +
 +    //Create and set up the content pane.
 +    MenuLookDemo demo = new MenuLookDemo();
 +    frame.setJMenuBar(demo.createMenuBar());
 +    frame.setContentPane(demo.createContentPane());
 +
 +    //Display the window.
 +    frame.setSize(450, 260);
 +    frame.setVisible(true);
 +  }
 +
 +  public static void main(String[] args) {
 +    //Schedule a job for the event-dispatching thread:
 +    //creating and showing this application's GUI.
 +    javax.swing.SwingUtilities.invokeLater(new Runnable() {
 +      public void run() {
 +        createAndShowGUI();
 +      }
 +    });
 +  }
 +}
 +</code>
  
swing/menus_checkboxes_radio.txt · Last modified: 2018/03/27 19:21 (external edit)