assign keys for combo box in java

后端 未结 3 1550
星月不相逢
星月不相逢 2021-01-26 10:27

I want to add a JComboBox in Swing that is simple but I want to assign the values for each items in combo. I have the following code

    JComboBox         


        
相关标签:
3条回答
  • 2021-01-26 10:42

    You can add an item as an object instead of adding String like this:

    JComboBox<ItemClass> jc = new JComboBox<ItemClass>();
        jc.addItem(item1);
        jc.addItem(item2);
        jc.addItem(item3);
    

    So to return key, the function of the event is : jc.getSelectedItem().getKey Doing this way you have to override the toString() function of class ItemClass to return the string you want to show in combobox.

    Btw, for return number, you may try : jc.getSelectedIndex(), it'll return your index of your string (0 1 2 for "a" "b" "c")

    0 讨论(0)
  • 2021-01-26 10:42

    Wrap your data in a simple class:

    class MyData {
      int value;
      String text;
      ...
    }
    

    Now you can write your own renderer by extending BasicComboBoxRenderer. Cast the "value" to "MyData" and render the text.

    public class Bla extends BasicComboBoxRenderer{
    
    @Override
    public Component getListCellRendererComponent(JList list, Object value,
            int index, boolean isSelected, boolean cellHasFocus) {
        if(value instanceof MyData) {
            setText(((MyData) value).getText());
        }
        return super.getListCellRendererComponent(list, value, index, isSelected,
                cellHasFocus);
    }
    }
    

    if you use Java7 it is best practice to use generics like @Taiki has shown. Now you can get the selected object by jc.getSelectedItem(). It is always from type MyData and you can access the text ("a", "b", etc.) and the value (1, 2, 3, etc.)

    0 讨论(0)
  • 2021-01-26 10:45

    you can create your own Model and add it to the combo box instead of adding Strings directly.

    check Java ComboBoxModel.

    you can find more info in this thread

    0 讨论(0)
提交回复
热议问题