Java 区分大小写的jcombobox
我的问题有点棘手。我使用的是一个Java 区分大小写的jcombobox,java,swing,jcombobox,case-sensitive,Java,Swing,Jcombobox,Case Sensitive,我的问题有点棘手。我使用的是一个可编辑JComboBox。它可能包含区分大小写的项目。例如,它可能有Item1和Item1。因此,在我的案例中,这两个项目应该被视为不同的 但问题是,这两个项目被视为相同的。无论我选择了哪些项目,它总是选择第一个(Item1)。我在谷歌上搜索过,但没有找到任何解决方案。这就是为什么,我在这里 代码: //loading of Items jdcbmItemType = new javax.swing.DefaultComboBoxModel(ItemTypeHan
可编辑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());
}
}
//加载项目
jdcbmItemType=newjavax.swing.DefaultComboxModel(ItemTypeHandler.getItemTypeComboData(MainFrame.companyId));
私有无效jcbItemTypeMouseReleased(MouseEvent evt)
{
如果(jcbItemType.getSelectedIndex()!=-1)
{
loadItemTypeDetails(((ItemObject)jcbItemType.getSelectedItem()).getId());
}
其他的
{
重置字段();
}
}
公共静态向量getItemTypeComboDataV(BigInteger companyId、BigInteger categoryId、boolean addFirstElement、TriState deleted)抛出异常包装器、EJBException
{
尝试
{
return(Vector)lookupItemTypeFacade().getItemTypeComboData(companyId、categoryId、addFirstElement、deleted);
}捕获(例外包装例外包装)
{
抛出异常包装器;
}捕获(EJBException ejbEx)
{
抛出ejbEx;
}捕获(例外情况除外)
{
抛出新的ExceptionWrapper(例如getMessage());
}
}
ItemObject
是一个自定义类,其中一个字段是biginger
,另一个字段是String
getItemTypeComboData
功能正常。因此,您可以假设从这里获得ItemObject
的列表,它将很好地将其转换为Vector
jcbItemType.getSelectedIndex()
始终为Item1
和Item1
返回相同的索引。但是它为项2
返回不同的索引
我知道,如果我能使用itemStateChanged
event会更好。但就我而言,我不能用它。但我的问题是,mousererelease
和FocusLost
适用于不同的名称字符串,但不适用于不同大小写的相同字符串。我真的被绊倒了
另一种提问方式:
//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());
}
}
是否对区分大小写的项目进行mousererelease
或FocusLost
事件检查
如何解决这个问题
谢谢。我想你是这样做的:-
String[] items = {"item1", "item2"};
JComboBox cb = new JComboBox(items);
cb.setEditable(true);
现在,您必须访问JCombobox元素,这些元素以数组形式插入其中,如下所示:-
MyItemListener actionListener=新建MyItemListener();
cb.addItemListener(actionListener)
添加itemListener后,您可以使用单个JCombobox项执行不同的任务我认为您是这样做的:-
String[] items = {"item1", "item2"};
JComboBox cb = new JComboBox(items);
cb.setEditable(true);
现在,您必须访问JCombobox元素,这些元素以数组形式插入其中,如下所示:-
MyItemListener actionListener=新建MyItemListener();
cb.addItemListener(actionListener)
添加itemListener后,您可以使用单独的JCombobox项执行不同的任务,这是我的,很好用。如果这不是您想要的,请发布您的帮助
这是我的,这个很好用,如果这不是你要找的,那就发布你的帖子,寻求更好的帮助
试试这个,它很好用 使用ActionListener()捕获单击。。。然后使用getSelectedItem()捕获在JComboBox上单击的项目 试试这个 检查控制台中的输出
myComboBox.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent ie) {
String str = (String) myComboBox.getSelectedItem();
System.out.println(str);
}
试试这个,它很好用 使用ActionListener()捕获单击。。。然后使用getSelectedItem()捕获在JComboBox上单击的项目 试试这个 检查控制台中的输出
myComboBox.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent ie) {
String str = (String) myComboBox.getSelectedItem();
System.out.println(str);
}
没有解决办法吗?专家们,请给出建议。请发布您的完整代码。这比语言更有意义。另外,在
JComboBox
中添加新项时是否看到此警告:警告:如果添加重复的字符串对象,可能会出现焦点和键盘导航问题。解决方法是添加新对象而不是字符串对象,并确保定义了toString()方法。
您尚未显示ItemTypeHandler.getItemTypeComboData(MainFrame.companyId)的代码。
。请阅读我发布的上述警告消息。@Subs:我检查了您的警告消息,toString()
已定义。很抱歉,您的代码不完整。我在你的代码中没有看到ItemObject
的toString()
方法,我也不知道jcbitemtypemousererelease(MouseEvent evt)
是否是actionevent
事件。它没有任何解决方案吗?专家们,请给出建议。请发布您的完整代码。这比语言更有意义。另外,在JComboBox
中添加新项时是否看到此警告:警告:如果添加重复的字符串对象,可能会出现焦点和键盘导航问题。解决方法是添加新对象而不是字符串对象,并确保定义了toString()方法。
您尚未显示ItemTypeHandler.getItemTypeComboData(MainFrame.companyId)的代码。
。请阅读我发布的上述警告消息。@Subs:我检查了您的警告消息,toString()
已定义。很抱歉,您的代码不完整。我在你的代码中没有看到ItemObject
的toString()
方法,也不知道jBitemTypeMouseRelease(MouseEvent evt)
是否是actionevent
。请再次阅读我的问题。你说的我都做了。但我的问题在于区分大小写。请再次阅读我的问题。你说的我都做了。但我的问题在于区分大小写。有一件事我忘了提。我正在使用mousererelease
事件获取所选项目。使用Mou难道不可能吗