我的问题有点棘手。我正在使用一个Editable JComboBox
. 它可能包含区分大小写的项目。例如,它可能有Item1
和item1
。因此,在我的情况下,这两个项目应该被视为不同。
但问题是,这两个项目被视为相同。无论我选择了哪些项目,它总是选择第一个(Item1
)。我在谷歌中搜索过,但没有找到任何解决方案。这就是为什么,我在这里。
代码:
//loading of Items
jdcbmItemType = new javax.swing.DefaultComboBoxModel(ItemTypeHandler.getItemTypeComboData(MainFrame.companyId));
private void jcbItemTypeMouseReleased(MouseEvent evt)
{
if (jcbItemType.getSelectedIndex() != -1)
{
loadItemTypeDetails(((ItemObject) jcbItemType.getSelectedItem()).getId());
}
else
{
resetFields();
}
}
public static Vector<ItemObject> getItemTypeComboDataV(BigInteger companyId, BigInteger categoryId, boolean addFirstElement, TriState deleted) throws ExceptionWrapper, EJBException
{
try
{
return (Vector<ItemObject>)lookupItemTypeFacade().getItemTypeComboData(companyId, categoryId, addFirstElement, deleted);
} catch (ExceptionWrapper exceptionWrapper)
{
throw exceptionWrapper;
} catch (EJBException ejbEx)
{
throw ejbEx;
} catch (Exception ex)
{
throw new ExceptionWrapper(ex.getMessage());
}
}
ItemObject
是一个 customClass,其中一个字段是BigInteger
,另一个字段是String
。
getItemTypeComboData
运行正常。所以,你可以假设从这里得到一个列表,ItemObject
它会很好地将它转换为Vector<ItemObject>
jcbItemType.getSelectedIndex()
Item1
和总是返回相同的索引item1
。但它返回不同的索引item2
。
我知道,如果我可以使用itemStateChanged
事件会更好。但就我而言,我无法使用它。但我的问题是,对于不同的名称字符串,但对于不同大小写的相同字符串,效果很好MouseReleased
。FocusLost
我真的很迷茫。
另一种提问方式:
是否MouseReleased
或FocusLost
事件检查区分大小写的项目?
如何解决这个问题?
谢谢。