在JComboBox中更改显示的项目名称

时间:2015-06-21 16:13:23

标签: java swing entity jcombobox

我使用以下代码填充了包含实体类中项目的组合框:

private void fillPositionComboBox(){
    EntityManager em = JPAUtilities.getEntityManagerFactory().createEntityManager();
    positionComboBox.removeAllItems();
    try{
        List<Position> list = em.createQuery("select p from Position p order by p.positionCode").getResultList();
        for(int i=0; i<list.size();i++){
            positionComboBox.addItem(list.get(i));
        }
    }
    catch(Throwable t){
        JOptionPane.showMessageDialog(this, t.toString());
    }
    finally{
        em.close();
    }
}

但是当我运行该程序并单击组合框时,它在其下拉列表中显示了奇怪的文本。我想用特定的String替换那些奇怪的文本,比如来自实体position.getPositionName();的字符串。可能吗 ?如果是这样,请说明如何执行代码并解释代码。非常感谢你的帮助!

1 个答案:

答案 0 :(得分:0)

我不知道我是否理解了您的问题,但是如果您希望JCombobox显示的文本与其存储的文本不同,那么您应该创建一个具有内部文本和方法的类{{ 1}}返回一个不同的文本:

toString()

然后你必须创建一个使用这个类的class MyData{ private String data; MyData(String text){ data = text; } public String toString(){ if(condition) return data; else return "Something else"; } }

JCombobox

将所有结果放入JComboBox<MyData> combo = new JComboxBox<>() 对象,然后再将其添加到MyData