-2

我的数据库中有一个表,我现在有一些名称和相应的代码,现在我想要在 jcombobox 中显示名称,但是当我从该 jcombobox 中选择任何名称时,应该返回相应的代码。

桌子就像

名称代码
a 1
b 2
c 3

4

4 回答 4

1

为什么不使用列表单元渲染器将代码和名称包装在对象中,只渲染ame,但是您可以从 .getSelectedItem 获取返回的对象并从中提取代码

于 2012-07-11T07:54:39.983 回答
1

您需要将代码存储在例如一个ArrayList并使用组合框的选择索引检索当前代码。

private JComboBox comboBox;
private List<Integer> codes;

private void createUI() {
    comboBox = new JComboBox();
    codes = new ArrayList<Integer>();
    addItem("one", 42);
    addItem("two", 127);
    comboBox.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            System.out.println(comboBox.getSelectedIndex());
            System.out.println(codes.get(comboBox.getSelectedIndex()));
        }
    });
    add(comboBox);
}

private void addItem(String name, int code) {
    comboBox.addItem(name);
    codes.add(code);
}
于 2012-07-11T07:34:19.580 回答
0

您可以创建一个包装类 - 我们称之为TableElement

class TableElement {
  public String name;
  public double value;

  public TableElement(String n, double v) {
    name = n;
    value = v;
  }

  // this is what is shown in the JComboBox
  public String toString() {
    return name;
  }
}

然后你可以创建一个包含所有表格元素的数组并JComboBox像这样创建

Vector<TableElement> vect = new Vector<TableElement>();
for (/* all your table elements */) 
  vect.add(new TableElement(elementName, elementValue);
JComboBox comboBox = new JComboBox(vect);

并像这样读出来:

TableElement selected = (TableElement)comboBox.getSelectedItem();
System.out.println("name = " +selected.name + ",value = " + selected.value);
于 2012-07-11T08:26:41.387 回答
0

看看

  1. ItemListener(触发事件总是两次)

  2. 动作监听器

于 2012-07-11T07:01:56.773 回答