Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 更改JTabbedPane中的选项卡时,如何停止编辑JTable中的JCombobox_Java_Swing_Jtable_Jtabbedpane - Fatal编程技术网

Java 更改JTabbedPane中的选项卡时,如何停止编辑JTable中的JCombobox

Java 更改JTabbedPane中的选项卡时,如何停止编辑JTable中的JCombobox,java,swing,jtable,jtabbedpane,Java,Swing,Jtable,Jtabbedpane,我需要添加一个JCombobox,它在JTable中有一个可编辑的文本字段。此JTable显示在JTabbedPane的选项卡中 问题是,每当我将combobox文本编辑器保持在编辑模式并更改选项卡时,combobox文本框仍仅处于编辑状态。我希望在更改选项卡时将其禁用 我曾尝试将requestfocus添加到选项卡窗格,但没有任何用处。请建议在单击选项卡时使组合框的此文本字段处于非活动状态的任何方法。在选项卡窗格中添加一个ChangeListener,以捕获选项卡更改事件。从该侦听器,您可以委

我需要添加一个JCombobox,它在JTable中有一个可编辑的文本字段。此JTable显示在JTabbedPane的选项卡中

问题是,每当我将combobox文本编辑器保持在编辑模式并更改选项卡时,combobox文本框仍仅处于编辑状态。我希望在更改选项卡时将其禁用


我曾尝试将requestfocus添加到选项卡窗格,但没有任何用处。请建议在单击选项卡时使组合框的此文本字段处于非活动状态的任何方法。

在选项卡窗格中添加一个
ChangeListener
,以捕获选项卡更改事件。从该侦听器,您可以委托给一个方法,该方法停止JTable编辑器的编辑

ChangeListener changeListener = new ChangeListener() {
    int previousIndex = 0;

    public void stateChanged(ChangeEvent changeEvent) {
      JTabbedPane tbPane = (JTabbedPane) changeEvent.getSource();
      stopTableEditor(tbPane.getComponentAt(previousIndex));
      previousIndex = tbPane.getSelectedIndex();
    }

    private void stopTableEditor(Component component) {
        JTable table = ... // retrieve table instance from component
        if(table.isEditing())
           table.getCellEditor().stopCellEditing();
    }
};

再次感谢你……因为我是新手,所以我不知道这一点。