This shows you the differences between two versions of the page.
|
swing:menus_checkboxes_radio [2015/05/11 06:44] gthanos |
swing:menus_checkboxes_radio [2016/02/26 11:15] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== CheckBox Menu Items & RadioButton Menu Items ====== | ||
| - | |||
| - | Σε αναλογία με τα check box buttons και radio buttons μπορείτε να ορίσετε σε ένα μενού //CheckBox Menu Items// και //RadioButton Menu Items//. Δείτε το παρακάτω παράδειγμα χρήσης ενός τέτοιου μενού από το site της Oracle. | ||
| - | |||
| - | <code java MenuLookDemo.java> | ||
| - | package components; | ||
| - | |||
| - | 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 images/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("images/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> | ||