我需要添加一个 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/