我有一个由hashmap填充的Jcombo框(每个JComboBox项与hashmap对象相同 - 由2个值格式化:一个键和一个值)。 当我使用getSelectedItem()时 - 返回类似的内容:key = value;
我需要将密钥存储在一个变量中,将值存储在另一个变量中。
我该怎么做?是否存在JComboBox的替代方案,以便为JComboBox的每个项目存储2个值?
答案 0 :(得分:1)
当我得到你的问题时。这是一个非常简单的JComboBox类。您可以通过阅读代码并根据需要进行修改来了解该过程
import java.util.ArrayList;
import java.util.Map;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
public class JComboBoxPair<K, E> extends JComboBox<E> {
private ArrayList<Object> key_array;
public JComboBoxPair() {
this.key_array = new ArrayList<>();
}
public void setModel(Map<String, String> map) {
DefaultComboBoxModel boxModel = new DefaultComboBoxModel(map.values().toArray());
super.setModel(boxModel);
key_array.clear();
key_array = new ArrayList<>(map.keySet());
}
public String[] getSelectedItemInfoArray() {
String[] ar = new String[2];
ar[0] = key_array.get(super.getSelectedIndex()).toString();
ar[1] = super.getSelectedItem().toString();
return ar;
}
@Override
public String getSelectedItem() {
return super.getSelectedItem().toString();
}
public String getSelectedKey() {
return key_array.get(super.getSelectedIndex()).toString();
}
}