getItem和getSelectedItem之间的区别

时间:2013-10-19 14:44:04

标签: java swing jcombobox

在使用Swing中的JComboBox并阅读所有接口和类及其各种属性时,我不会在ComboBoxEditor的{​​{1}}方法和{getItem方法之间混淆{1}} JComboBox

我是从一个可编辑的组合框的角度来谈论的。在编辑组合框中的某些文本并按Enter后调用这两种方法时,两种方法都返回相同的值。当然,这是预期的,但那么这两种方法的具体用途是什么?在组合框的代码中调用它们的顺序有什么不同吗?

2 个答案:

答案 0 :(得分:3)

ComboBoxEditor的getItem()函数返回已修改项 JComboBox getSelectedItem()返回所选项目。但是要特定于您的问题:

  

调用它们的顺序是否有任何不同   在组合框的代码中?

可编辑的组合框使用编辑器显示所选项目。编辑项目后,会立即对ComboBoxEditor的已注册JComboBox实例触发操作事件。编辑器的动作侦听器的已实现actionPerformed功能从item获取已编辑的editor,然后使用selected的{​​{1}}设置为model功能从以下源代码中可见:

setSelectedItem(item)

然后,当我们要求获取public void actionPerformed(ActionEvent e) { Object newItem = getEditor().getItem(); // get edited's item setPopupVisible(false); getModel().setSelectedItem(newItem); // model set the item as selected String oldCommand = getActionCommand(); setActionCommand("comboBoxEdited"); fireActionEvent(); setActionCommand(oldCommand); } 时,它会通过询问getSelectedItem()返回所选项目。

答案 1 :(得分:2)

为什么要使用ComboBoxEditor的getItem()方法?获取编辑器以获得其价值是额外的工作。

通常,您应该只从组件模型中获取数据。该模型负责跟踪模型中的数据以及模型中的选定项目。组合框的getSelectedItem()方法是从模型中获取所选项目的便捷方法。

编辑负责在数据更改时更新模型。所以我想说编辑器使用getItem()方法在适当的时候更新模型,你不应该真正使用它。