⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 configurablecombobox.java

📁 本系统是用 java 语言实现的一个 Email客户端
💻 JAVA
字号:
package net.suberic.util.gui;import javax.swing.*;import net.suberic.util.VariableBundle;import java.util.HashMap;import java.util.Hashtable;import java.util.StringTokenizer;import java.util.MissingResourceException;import javax.swing.Action;import java.awt.event.*;/** * This is a JComboBox 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 ConfigurableComboBox extends JComboBox implements ConfigurableUI {  // the latest commands list.  i'm storing this for now because i   // can't do a JButton.removeActionListeners().    protected HashMap selectionMap = new HashMap();  protected Hashtable commands = new Hashtable();  String mKey = null;  int minWidth = -1;  int minHeight = -1;  public ConfigurableComboBox() {    super();  }    /**   * This creates a new ConfigurableComboBox using the buttonID as the   * configuration key, and vars as the source for the values of all the   * properties.   *   * If buttonID doesn't exist in vars, then this returns an empty    * ComboBox.   */  public ConfigurableComboBox(String buttonID, VariableBundle vars) {    super();        configureComponent(buttonID, vars);  }    /**   * This configures the ComboBox using the given buttonID and    * VariableBundle.   *   * As defined in interface net.suberic.util.gui.ConfigurableUI.   */  public void configureComponent(String key, VariableBundle vars) {    this.setRenderer(new ConfigurableComboRenderer());    mKey = key;    StringTokenizer iKeys = null;    try {      iKeys = new StringTokenizer(vars.getProperty(key), ":");    } catch (MissingResourceException mre) {      mre.printStackTrace();      try {	System.err.println(vars.getProperty("error.NoSuchResource") + " " + mre.getKey());      } catch (MissingResourceException mretwo) {	System.err.println("Unable to load resource " + mre.getKey());	return;      }       return;    }    String currentToken;    while (iKeys.hasMoreTokens()) {      currentToken=iKeys.nextToken();      Object i = createComboBoxItem(key + "." + currentToken, vars);      this.addItem(i);    }    this.addItemListener(new ItemListener() {	public void itemStateChanged(ItemEvent e) {	  if (e.getStateChange() == ItemEvent.SELECTED) {	    Object selectedItem = e.getItem();	    String cmd = (String)selectionMap.get(selectedItem);	    if (cmd != null) {	      Action action = getAction(cmd);	      if (action != null) {		action.actionPerformed(new ActionEvent(e.getSource(), e.getID(), cmd));	      }	    }	  }	}      });    this.setMaximumSize(this.getPreferredSize());    String toolTip = vars.getProperty(key + ".ToolTip", "");    if (toolTip != "") {      setToolTipText(toolTip);    }  }  /**   * And this actually creates the menu items themselves.   */  protected Object createComboBoxItem(String buttonID, VariableBundle vars) {    ImageIcon returnValue = null;    IconManager iconManager = IconManager.getIconManager(vars, "IconManager._default");    ImageIcon icon = iconManager.getIcon(vars.getProperty(buttonID + ".Image"));    if (icon != null) {      if (minWidth < 0) {	minWidth = icon.getIconWidth();      } else {	minWidth = java.lang.Math.min(minWidth, icon.getIconWidth());      }            if (minHeight < 0) {	minHeight = icon.getIconHeight();      } else {	minHeight = java.lang.Math.min(minHeight, icon.getIconHeight());      }                  //returnValue.setIcon(icon);      returnValue = icon;    }        String cmd = vars.getProperty(buttonID + ".Action", buttonID);        selectionMap.put(returnValue, cmd);	        return returnValue;  }    /**   * 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;  }    /**   * 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);  }  class ConfigurableComboRenderer extends JLabel implements ListCellRenderer {    public ConfigurableComboRenderer() {      setOpaque(true);      setHorizontalAlignment(CENTER);      setVerticalAlignment(CENTER);    }        public java.awt.Component getListCellRendererComponent(	JList list,        Object value,        int index,        boolean isSelected,        boolean cellHasFocus)    {      if (isSelected) {	setBackground(list.getSelectionBackground());	setForeground(list.getSelectionForeground());      } else {	setBackground(list.getBackground());	setForeground(list.getForeground());      }            ImageIcon icon = (ImageIcon)value;      //setText(icon.getDescription());      setIcon(icon);      return this;    }  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -