java - 在 JTabbedPane 中更改选项卡时如何停止编辑 JTable 中的 JCombobox

标签 java swing jtable jtabbedpane

我需要添加一个 JCombobox,它在 JTable 中具有可编辑的文本字段。该 JTable 存在于 JTabbedPane 的选项卡中。

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

我尝试将 requestfocus 添加到 tabbedpane 但没有用。请提出任何方法,使组合框的此文本字段在单击选项卡时处于非 Activity 状态。

最佳答案

ChangeListener 添加到选项卡式 Pane 以捕获选项卡更改事件。从该监听器中,您可以委托(delegate)一个方法来阻止 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();
    }
};

关于java - 在 JTabbedPane 中更改选项卡时如何停止编辑 JTable 中的 JCombobox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57432329/

相关文章:

java - 无法解析引用本地 ejb-ref

java - 启动线程内的方法?

java - 使用 Android 发布 XML 文件

java - Swing:仅使用 Netbeans 将 JFormattedTextField 设置为数字

java - 如何使用箭头键在屏幕上移动图形?

java - 如何检查当前 Java 应用程序是否在我的 Windows PC 上的前台?

java - 如何将数据库中的行数据插入到 JTable 的特定列中?

java - 使用 JAR 文件中的图像

java - 将 JCombo 列添加到 JTable

java - 从右到左排列 JTable 列