JComboBox: setEditor(ComboBoxEditor anEditor) : JComboBox « javax.swing « Java by API






JComboBox: setEditor(ComboBoxEditor anEditor)

  

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashMap;
import java.util.Map;

import javax.swing.ComboBoxEditor;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.BevelBorder;

public class MainClass extends JPanel {

  private IconItem items[] = { new IconItem("A", "A.gif"),
      new IconItem("B", "B.gif"),
      new IconItem("C", "C.gif") };

  Map itemMap = new HashMap();

  public MainClass() {
    // Build a mapping from book titles to their entries
    for (int i = 0; i < items.length; i++) {
      itemMap.put(items[i].getTitle(), items[i]);
    }

    setLayout(new BorderLayout());

    JComboBox bookCombo = new JComboBox(items);
    bookCombo.setEditable(true);
    bookCombo.setEditor(new MyComboBoxEditor(itemMap, items[0]));
    bookCombo.setMaximumRowCount(4);
    bookCombo.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        System.out.println("You chose " + ((JComboBox) e.getSource()).getSelectedItem() + "!");
      }
    });
    bookCombo.setActionCommand("Hello");
    add(bookCombo, BorderLayout.CENTER);
  }

  public static void main(String s[]) {
    JFrame frame = new JFrame("Combo Box Example");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setContentPane(new MainClass());
    frame.pack();
    frame.setVisible(true);
  }
}

class IconItem {
  private final String title;

  private final String imagePath;

  private ImageIcon image;

  public IconItem(String title, String imagePath) {
    this.title = title;
    this.imagePath = imagePath;
  }

  public String getTitle() {
    return title;
  }

  public ImageIcon getImage() {
    if (image == null) {
      image = new ImageIcon(imagePath);
    }
    return image;
  }

  // Override standard toString method to give a useful result
  public String toString() {
    return title;
  }
}

class MyComboBoxEditor implements ComboBoxEditor {
  Map map;

  ImagePanel panel;

  ImageIcon questionIcon;

  public MyComboBoxEditor(Map m, IconItem defaultChoice) {
    map = m;
    panel = new ImagePanel(defaultChoice);
    questionIcon = new ImageIcon("question.gif");
  }

  public void setItem(Object anObject) {
    if (anObject != null) {
      panel.setText(anObject.toString());
      IconItem entry = (IconItem) map.get(anObject.toString());
      if (entry != null)
        panel.setIcon(entry.getImage());
      else
        panel.setIcon(questionIcon);
    }
  }

  public Component getEditorComponent() {
    return panel;
  }

  public Object getItem() {
    return panel.getText();
  }

  public void selectAll() {
    panel.selectAll();
  }

  public void addActionListener(ActionListener l) {
    panel.addActionListener(l);
  }

  public void removeActionListener(ActionListener l) {
    panel.removeActionListener(l);
  }

  class ImagePanel extends JPanel {

    JLabel imageIconLabel;

    JTextField textField;

    public ImagePanel(IconItem initialEntry) {
      setLayout(new BorderLayout());

      imageIconLabel = new JLabel(initialEntry.getImage());
      imageIconLabel.setBorder(new BevelBorder(BevelBorder.RAISED));

      textField = new JTextField(initialEntry.getTitle());
      textField.setColumns(45);
      textField.setBorder(new BevelBorder(BevelBorder.LOWERED));

      add(imageIconLabel, BorderLayout.WEST);
      add(textField, BorderLayout.EAST);
    }

    public void setText(String s) {
      textField.setText(s);
    }

    public String getText() {
      return (textField.getText());
    }

    public void setIcon(Icon i) {
      imageIconLabel.setIcon(i);
      repaint();
    }

    public void selectAll() {
      textField.selectAll();
    }

    public void addActionListener(ActionListener l) {
      textField.addActionListener(l);
    }

    public void removeActionListener(ActionListener l) {
      textField.removeActionListener(l);
    }
  }
}

           
         
    
  








Related examples in the same category

1.implements JComboBox.KeySelectionManager
2.new JComboBox()
3.new JComboBox(ComboBoxModel aModel)
4.new JComboBox(Vector items)
5.JComboBox: addActionListener(ActionListener lis)
6.JComboBox: addItem(Object o)
7.JComboBox: addItemListener(ItemListener lis)
8.JComboBox: addPopupMenuListener(PopupMenuListener l)
9.JComboBox: getActionMap()
10.JComboBox: getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
11.JComboBox: getItemAt(int index)
12.JComboBox: getItemCount()
13.JComboBox: getKeySelectionManager()
14.JComboBox: getSelectedIndex()
15.JComboBox: getSelectedItem()
16.JComboBox: insertItemAt(Object anObject, int index)
17.JComboBox: isPopupVisible()
18.JComboBox: removeAllItems()
19.JComboBox: removeItemAt(int anIndex)
20.JComboBox: setKeySelectionManager(KeySelectionManager aManager)
21.JComboBox: setRenderer(ListCellRenderer aRenderer)
22.JComboBox: setEditable(boolean b)
23.JComboBox: setMaximumRowCount(int count)
24.JComboBox: setSelectedIndex(int anIndex)
25.JComboBox: setSelectedItem(Object anObject)
26.JComboBox: setUI(ComboBoxUI ui)