Java 如何到达jSwing combobox中的对象?

Java 如何到达jSwing combobox中的对象?,java,swing,button,combobox,Java,Swing,Button,Combobox,我正在开发一个基于maven的java桌面应用程序,并使用jSwing框架作为接口。我需要在combobox中向人们显示任务的名称,但我不确定我是否做得很好 在这个代码部分中,我从数据库中获取了任务作为列表,然后在combobox中显示它们 List<TmsTask> task; int i; try { task = Application.getApp().getMainService().getTasksList(); for (

我正在开发一个基于maven的java桌面应用程序,并使用jSwing框架作为接口。我需要在combobox中向人们显示任务的名称,但我不确定我是否做得很好

在这个代码部分中,我从数据库中获取了任务作为列表,然后在combobox中显示它们

List<TmsTask> task;
    int i;
    try {
        task = Application.getApp().getMainService().getTasksList();
        for (i = 0; i <= task.size(); i++) {
            jComboBoxTask.setModel(new javax.swing.DefaultComboBoxModel<>(new String[]{task.get(i).getTaskName(), 
                                                                                       task.get(i + 1).getTaskName(),
                                                                                       task.get(i + 2).getTaskName()}));
        }

    } catch (Exception ex) {
        Logger.getLogger(BindTask.class.getName()).log(Level.SEVERE, null, ex);
    }
列表任务;
int i;
试一试{
task=Application.getApp().getMainService().getTasksList();
for(i=0;i
for(i=0;i@camickr是正确的(在注释中)。使用组合框显示对象中的所有字段没有多大意义。只需从对象中重写
toString
方法,默认渲染器就会显示它

下面是如何使用一个简单的Person对象(姓名、年龄)执行此操作

封装测试;
导入java.awt.Dimension;
导入java.awt.FlowLayout;
导入javax.swing.JComboBox;
导入javax.swing.JFrame;
导入javax.swing.SwingUtilities;
公共类ObjectsInComboBox扩展了JFrame{
公共对象组合框(){
超级(“组合框”);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setPreferredSize(新尺寸(300300));
getContentPane().setLayout(新的FlowLayout());
JComboBox personComboBox=新JComboBox();
getContentPane().add(personComboBox);
包装();
addItem(新人(“约翰”,31岁));
附加项(新人(“乔治”,55岁));
addItem(新人(“Mike”,12));
addItem(新人(“Brian”,36岁));
}
公共静态void main(字符串[]args){
SwingUtilities.invokeLater(()->{
ObjectsInComboBox框架=新建ObjectsInComboBox();
frame.setVisible(true);
});
}
}
班主任{
私有字符串名称;
私人互联网;
公众人物(字符串名称,整数年龄){
this.name=名称;
这个。年龄=年龄;
}
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
公共整数getAge(){
回归年龄;
}
公共无效设置(整数){
这个。年龄=年龄;
}
@凌驾
公共字符串toString(){
返回name+“-”+age;//toString覆盖,以便渲染器可以显示它。
}
}

我的主要问题是在combobox中没有显示任务名称,主要问题是它们只是字符串。我的意思是我想在combobox中使用数据来保存表单。所以我需要任务对象的信息,而不仅仅是任务名称。如何到达任务对象,然后在combobox中显示它们将是一个问题。
我的主要问题是在c中没有显示任务名称ombobox,
-是的。根据提供的代码,您将只显示一个任务名称,而不是任务名称列表。当您提出问题时,请发布正确的代码。您发布的代码完全错误。您创建了一个循环,这意味着有多个任务。如果for循环执行多次,您将丢失第一个站点的数据循环的定量。如果只有一个任务,则不需要循环。在任何情况下,请参阅编辑。
private void jComboBoxTaskMousePressed(java.awt.event.MouseEvent evt) {                                           
    TmsTask task;

    try {
        task = Application.getApp().getMainService().getTasks();

            jComboBoxTask.setModel(new javax.swing.DefaultComboBoxModel<>(new String[]{task.getTaskName(), 
                                                                                       task.getTaskName(),
                                                                                       task.getTaskName()}));


    } catch (Exception ex) {
        Logger.getLogger(BindTask.class.getName()).log(Level.SEVERE, null, ex);
    }

}
for (i = 0; i <= task.size(); i++) 
{
    jComboBoxTask.setModel(new javax.swing.DefaultComboBoxModel<>(
       new String[]{task.get(i).getTaskName(), task.get(i + 1).getTaskName(),
package test;

import java.awt.Dimension;
import java.awt.FlowLayout;

import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class ObjectsInComboBox extends JFrame {
    public ObjectsInComboBox() {
        super("combo boxes");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setPreferredSize(new Dimension(300, 300));
        getContentPane().setLayout(new FlowLayout());

        JComboBox<Person> personComboBox = new JComboBox<>();
        getContentPane().add(personComboBox);
        pack();
        personComboBox.addItem(new Person("John", 31));
        personComboBox.addItem(new Person("George", 55));
        personComboBox.addItem(new Person("Mike", 12));
        personComboBox.addItem(new Person("Brian", 36));
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            ObjectsInComboBox frame = new ObjectsInComboBox();
            frame.setVisible(true);
        });
    }
}

class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return name + " - " + age; //toString override so renderer can show it.
    }
}