📄 configurablemenubar.java
字号:
package net.suberic.util.gui;import javax.swing.*;import net.suberic.util.VariableBundle;import java.util.Hashtable;import java.util.StringTokenizer;import java.util.MissingResourceException;import javax.swing.Action;/** * This is a JMenuBar which implements the ConfigurableUI interface, and * therefore may be dynamically created using a VariableBundle and key, * and updated using an array of Actions. */public class ConfigurableMenuBar extends JMenuBar implements ConfigurableUI { // the latest commands list. i'm storing this for now because i // can't do a JButton.removeActionListeners(). private Hashtable commands = new Hashtable(); /** * This creates a new ConfigurableMenuBar using the menubarID as the * configuration key, and vars as the source for the values of all the * properties. * * If menubarID doesn't exist in vars, then this returns an empty * Menubar. */ public ConfigurableMenuBar(String menuBarID, VariableBundle vars) { super(); configureComponent(menuBarID, vars); } /** * This configures the Menubar using the given menubarID and * VariableBundle. * * As defined in interface net.suberic.util.gui.ConfigurableUI. */ public void configureComponent(String menubarID, VariableBundle vars) { if ((menubarID != null) && (vars.getProperty(menubarID, "") != "")) { StringTokenizer tokens = new StringTokenizer(vars.getProperty(menubarID, ""), ":"); while (tokens.hasMoreTokens()) { String currentMenu = tokens.nextToken(); ConfigurableMenu m; if (vars.getProperty(menubarID + "." + currentMenu + ".class", "").equals("")) { m = new ConfigurableMenu(menubarID + "." + currentMenu, vars); } else { // this means we're using a custom Menu. try { Class menuClass = Class.forName(vars.getProperty(menubarID + "." + currentMenu + ".class", "net.suberic.util.gui.ConfigurableMenu")); m = (ConfigurableMenu) menuClass.newInstance(); m.configureComponent(menubarID + "." + currentMenu, vars); } catch (Exception e) { // if we get any errors, just create a plain // ConfigurableMenu. m = new ConfigurableMenu(menubarID + "." + currentMenu, vars); } } if (m != null) { this.add(m); } } } } /** * As defined in net.suberic.util.gui.ConfigurableUI */ public void setActive(javax.swing.Action[] newActions) { Hashtable tmpHash = new Hashtable(); if (newActions != null && newActions.length > 0) { for (int i = 0; i < newActions.length; i++) { String cmdName = (String)newActions[i].getValue(Action.NAME); tmpHash.put(cmdName, newActions[i]); } } setActive(tmpHash); } /** * As defined in net.suberic.util.gui.ConfigurableUI */ public void setActive(Hashtable newCommands) { commands = newCommands; setActiveMenus(); } private void setActiveMenus() { for (int i = 0; i < getMenuCount(); i++) { ((ConfigurableMenu)getMenu(i)).setActive(commands); } } /** * This gets an action from the supported commands. If there is no * supported action, it returns null */ public Action getAction(String command) { return (Action)commands.get(command); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -