gpt4 book ai didi

java - 如何使列中的单元格不可选择

转载 作者:行者123 更新时间:2023-11-29 05:24:49 25 4
gpt4 key购买 nike

我有一个 JTable,其中有些列是不可编辑的。我通过覆盖 isCellEditable 方法来做到这一点。我现在想让这些列中的单元格不可选择。如果用户使用 tab 键浏览单元格,我想集中精力“跳过”这些不可编辑的单元格。你能告诉我这是怎么做到的吗?谢谢。

最佳答案

所有导航行为都由表的 actionMap 中注册的操作控制。因此,要走的路是挂接到绑定(bind)到 Tab 键的操作,实现一个包装器,根据需要经常调用该操作,并用包装器替换原始操作。

用于跳过不可编辑单元格的原始代码片段:

Object actionKey = table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
.get(KeyStroke.getKeyStroke("TAB"));
final Action traverseAction = table.getActionMap().get(actionKey);
Action wrapper = new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
traverseAction.actionPerformed(e);
while(shouldRepeat((JTable) e.getSource())) {
traverseAction.actionPerformed(e);
}
}

private boolean shouldRepeat(JTable source) {
int leadRow = source.getSelectionModel().getLeadSelectionIndex();
int leadColumn = source.getColumnModel().getSelectionModel().getLeadSelectionIndex();
return !source.isCellEditable(leadRow, leadColumn);
}
};
table.getActionMap().put(actionKey, wrapper);

关于java - 如何使列中的单元格不可选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23075209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com