我使用以下代码填充了包含实体类中项目的组合框:
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();
的字符串。可能吗 ?如果是这样,请说明如何执行代码并解释代码。非常感谢你的帮助!
答案 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
。