如何将JComboBox项存储在2个变量中?

时间:2014-03-10 18:54:12

标签: select hashmap key jcombobox

我有一个由hashmap填充的Jcombo框(每个JComboBox项与hashmap对象相同 - 由2个值格式化:一个键和一个值)。 当我使用getSelectedItem()时 - 返回类似的内容:key = value;

我需要将密钥存储在一个变量中,将值存储在另一个变量中。

我该怎么做?是否存在JComboBox的替代方案,以便为JComboBox的每个项目存储2个值?

1 个答案:

答案 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();
}

}