在Swing中使用JComboBox并读取所有接口和类以及它们的各种属性时,在ComboBoxEditorgetItem方法和JComboBoxgetSelectedItem之间,我并不感到困惑。

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

最佳答案

ComboBoxEditor的getItem()函数返回已编辑的项目
并且JComboBox getSelectedItem()返回选定的项目。但是要针对您的问题:


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


可编辑的组合框使用编辑器显示所选项目。一旦编辑了项目,就会在ComboBoxEditor的已注册JComboBox实例上触发一个动作事件。编辑器的动作侦听器的已实现actionPerformed函数从item获取编辑后的editor,然后使用selectedmodel函数将其设置为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/

10-11 01:00