Java 7中的JCombobox已经更新为使用泛型 – 我一直认为它有点疏忽,它还没有,所以我很高兴看到这种变化.
但是,当试图以这种方式使用JCombobox时,我意识到我期望使用这些通用类型still just return Object.的方法
这究竟是为什么?对我来说,这似乎是一个愚蠢的设计决定.我意识到底层的ListModel有一个通用的getElementAt()方法,所以我会用它代替 – 但它有点迂回的方式做一些看似可能在JComboBox本身上改变的东西.
解决方法:
我想你引用getSelectedItem()?
原因是如果组合框是可编辑的,则所选项目不一定包含在后备模型中,并且不限于泛型类型.例如.如果你有一个可编辑的JComboBox< Integer>使用模型[1,2,3],您仍然可以在组件中键入“foo”,getSelectedItem()将返回String“foo”而不是Integer类型的对象.
如果组合框不可编辑,则始终可以按照cb.getItemAt(cb.getSelectedIndex())来实现类型安全.如果未选择任何内容,则返回null,这与getSelectedItem()的行为相同.
标签:jcombobox,java,generics,swing,java-7
来源: https://codeday.me/bug/20191004/1854590.html