gpt4 book ai didi

java - JComboBox 的值

转载 作者:行者123 更新时间:2023-12-01 04:57:38 25 4
gpt4 key购买 nike

是否可以定义与 JComboBox 中的实际内容不同的值?
在 HTML 中,它看起来如下:

<select>
<option value="value1">Content1</option>
<option value="value2">Content2</option>
<option value="value3">Content3</option>
</select>

在这里,无论内容有多长,都可以获得一个短值。

在Java中我只知道以下解决方案:

// Creating new JComboBox with predefined values
String[] petStrings = { "Bird", "Cat", "Dog", "Rabbit", "Pig" };
private JComboBox combo = new JComboBox(petStrings);

// Retrieving selected value
System.out.println(combo.getSelectedItem());

但在这里我只会得到“猫”,“狗”等

问题是,我想将数据库中的所有客户名称加载到 JComboBox 中,然后从所选客户中检索 ID。它应该看起来像这样:

<select>
<option value="104">Peter Smith</option>
<option value="121">Jake Moore</option>
<option value="143">Adam Leonard</option>
</select>

最佳答案

如果您创建一个 Customer 类并将 Customer 对象列表加载到组合框中,那么您将得到您想要的。组合框将显示对象的 toString(),因此 Customer 类应在 toString() 中返回名称。当您检索所选项目时,它是一个 Customer 对象,您可以从中获取 id 或您想要的任何其他内容。

<小时/>

这是一个例子来说明我的建议。然而,当您实现这个基本想法时,遵循 kleopatra 和 mKorbel 的建议将是一个好主意。

import java.awt.BorderLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class ComboJumbo extends JFrame{

JLabel label;
JComboBox combo;

public static void main(String args[]){
new ComboJumbo();
}

public ComboJumbo(){
super("Combo Jumbo");
label = new JLabel("Select a Customer");
add(label, BorderLayout.NORTH);

Customer customers[] = new Customer[6];
customers[0] = new Customer("Frank", 1);
customers[1] = new Customer("Sue", 6);
customers[2] = new Customer("Joe", 2);
customers[3] = new Customer("Fenton", 3);
customers[4] = new Customer("Bess", 4);
customers[5] = new Customer("Nancy", 5);

combo = new JComboBox(customers);
combo.addItemListener(new ItemListener(){

public void itemStateChanged(ItemEvent e) {
Customer c = (Customer)e.getItem();
label.setText("You selected customer id: " + c.getId());
}

});
JPanel panel = new JPanel();
panel.add(combo);
add(panel,BorderLayout.CENTER);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400, 200);
setVisible(true);
}


class Customer{
private String name;
private int id;

public Customer(String name, int id){
this.name = name;
this.id = id;
}

public String toString(){
return getName();
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}
}
}

关于java - JComboBox 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13849322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com