在Swing中使用JComboBox
并读取所有接口和类以及它们的各种属性时,在ComboBoxEditor
的getItem
方法和JComboBox
的getSelectedItem
之间,我并不感到困惑。
我是从可编辑组合框的角度说的。在组合框中编辑一些文本并按Enter后,当我调用这两个方法时,这两个方法将返回相同的值。当然,这是预期的,但是这两种方法的具体用途是什么?从组合框的代码中调用它们的顺序是否有所不同?
最佳答案
ComboBoxEditor的getItem()
函数返回已编辑的项目
并且JComboBox getSelectedItem()
返回选定的项目。但是要针对您的问题:
从中调用它们的顺序是否有所不同
在组合框的代码内?
可编辑的组合框使用编辑器显示所选项目。一旦编辑了项目,就会在ComboBoxEditor
的已注册JComboBox
实例上触发一个动作事件。编辑器的动作侦听器的已实现actionPerformed
函数从item
获取编辑后的editor
,然后使用selected
的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()
时,它将通过询问model
来返回所选项目。关于java - getItem和getSelectedItem之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19467271/