📄 menubuilder.java
字号:
package jgantt;import java.awt.event.ActionListener;import java.util.Hashtable;import java.util.ResourceBundle;import java.util.StringTokenizer;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JPopupMenu;import javax.swing.KeyStroke;/** * Generador de menues. * TODO: Convertirlo en una clase dinamica.... mas adelante. * * @author csilva */public class MenuBuilder { private static ResourceBundle bundle = ResourceBundle.getBundle("jgantt.Menues"); /** * Crea la barra de menues de acuerdo al contenido de * una propiedad. * * @param listener avisar los mensajes de los menues * @return JMenuBar with the items configured and the listeners asociated with this object */ public static JMenuBar buildMenuBar(ActionListener listener, String menuName, Hashtable menues) { JMenuBar menuBar = new JMenuBar(); menuBar.setOpaque(true); String menuConfig = bundle.getString(menuName); StringTokenizer st = new StringTokenizer(menuConfig, " "); while (st.hasMoreTokens()) { String menuId = st.nextToken(); JMenu menu = new JMenu(menuId); String menuDesc = bundle.getString("desc." + menuId); StringTokenizer dt = new StringTokenizer(menuDesc, "|"); menu.setText(dt.nextToken()); menu.setMnemonic(dt.nextToken().charAt(0)); buildMenues(listener, menuId, menu, menues); menuBar.add(menu); } return menuBar; } /** * Construye los items de un menu pulldown. * El menu se obtiene de: * <pre> * menu.<i>menuId</i>= item1 item2 * desc.item1 = <i>Text</i>|<i>mnemonic</i>[|<i>accelerator keystroke</i>] * </pre> * @param listener listener a asociar * @param bundle bundle con la descripcion del menu * @param menuId Id del menu * @param menu Menu desde el cual se colgaran los items */ static private void buildMenues( ActionListener listener, String menuId, JMenu menu, Hashtable menues) { String sub = bundle.getString("menu." + menuId); StringTokenizer mt = new StringTokenizer(sub, " "); while (mt.hasMoreTokens()) { String itemId = mt.nextToken(); if ("-".equals(itemId)) { menu.addSeparator(); continue; } // items String itemDesc = bundle.getString("desc." + itemId); StringTokenizer smt = new StringTokenizer(itemDesc, "|"); JMenuItem mi = new JMenuItem(itemId); mi.setActionCommand(itemId); mi.setText(smt.nextToken()); mi.setMnemonic(smt.nextToken().charAt(0)); if (smt.hasMoreElements()) mi.setAccelerator(KeyStroke.getKeyStroke(smt.nextToken())); mi.addActionListener(listener); menu.add(mi); menues.put(itemId, mi); } } /** * Construye los items de un menu popup. * El menu se obtiene desde un archivo de propiedades: jgantt.MainMenu * <pre> * menu.<i>menuId</i>= item1 item2 * desc.item1 = <i>Text</i>|<i>mnemonic</i>[|<i>accelerator keystroke</i>] * </pre> * @param listener listener a asociar * @param bundle bundle con la descripcion del menu * @param menuId Id del menu * @param menu Menu desde el cual se colgaran los items */ public static JPopupMenu buildPopup(ActionListener listener, String menuId) { JPopupMenu popup = new JPopupMenu("popup"); String sub = bundle.getString("menu." + menuId); StringTokenizer mt = new StringTokenizer(sub, " "); while (mt.hasMoreTokens()) { String itemId = mt.nextToken(); if ("-".equals(itemId)) { popup.addSeparator(); continue; } // items String itemDesc = bundle.getString("desc." + itemId); StringTokenizer smt = new StringTokenizer(itemDesc, "|"); JMenuItem mi = new JMenuItem(itemId); mi.setActionCommand(itemId); mi.setText(smt.nextToken()); mi.setMnemonic(smt.nextToken().charAt(0)); if (smt.hasMoreElements()) mi.setAccelerator(KeyStroke.getKeyStroke(smt.nextToken())); mi.addActionListener(listener); popup.add(mi); } return popup; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -