java - 为什么 ComboBoxModel<E> 返回对象而不是 E

标签 java swing

<分区>

使用Swing的ComboBoxModel,获取被选元素时需要进行类型转换,接口(interface)定义如下:

public interface ComboBoxModel<E> extends ListModel<E> {

    void setSelectedItem(Object anItem);

    Object getSelectedItem();

}

我认为 getSelectedItem 的返回类型可以是 E。 实际上,这是由 ComboBoxModel 继承的 ListModel 接口(interface)完成的,用于按索引选择:

public interface ListModel<E> {

   E getElementAt(int index);

}

ComboBoxModel 中不使用 E 类型参数的原因是什么?

最佳答案

因为用户可以编辑 ComboBox 文本字段。

JComboBox.setEditable(true);

如果 ComboBox 是可编辑的,则无论为模型提供什么类型的参数,用户都可以在 JComboBox.getSelectedItem() 以字符串形式返回的 ComboBox 文本字段中输入文本。

如果你想得到一个E的对象使用:

  E e = JComboBox.getModel().getElementAt(JComboBox.getSelectedIndex());

关于java - 为什么 ComboBoxModel<E> 返回对象而不是 E,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46140839/

相关文章:

java - Android 使用递归方法查找和着色找到的文本

java - Moneydance 扩展开发的最佳实践

java - 当自定义渲染器设置为 jTable 时,每次更新时它都会工作吗?

java - 找不到 iText7 的 getInstance() 方法,即使它识别 PdfWriter 类

java - JList java 的干净模型

java - 从树中删除节点后如何阻止 JTree 崩溃

java - 使用 JFreechart 调整适合另一个轴的大小

java - 找到两个链表的合并节点?

java - JCombobox 始终创建为 Private 而不是 public

java - 使用数组方法java计算和显示字符串中的元音