gpt4 book ai didi

java - 使用 TAB 将焦点更改为 JTable 中的下一个组件

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:28:28 26 4
gpt4 key购买 nike

JTable 的默认行为是将焦点更改到下一个单元格,我想强制它在按下 TAB 键时将焦点移动到下一个组件(例如 JTextField)。
我覆盖了 DefaultTableModelisCellEditable 方法以始终返回 false:

public boolean isCellEditable(int rowIndex, int columnIndex) {
return false;
}

但它仍然不会将焦点转移到下一个组件!
我应该如何使 JTable 将焦点更改为下一个组件而不是下一个单元格?

最佳答案

Shift-/Tab 键默认用于在组件之间转移焦点。 JTable 明确请求在内部处理 shift-/tab(通过提供不包括这些的 focusTraversalKeys 集)。

遵循一般规则(如果有专门的 api 可用于任务,请使用它而不是滚动你自己的 ),解决方案是设置遍历键以再次包含它们:

Set<AWTKeyStroke> forward = new HashSet<AWTKeyStroke>(
table.getFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS));
forward.add(KeyStroke.getKeyStroke("TAB"));
table.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, forward);
Set<AWTKeyStroke> backward = new HashSet<AWTKeyStroke>(
table.getFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS));
backward.add(KeyStroke.getKeyStroke("shift TAB"));
table.setFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, backward);

关于java - 使用 TAB 将焦点更改为 JTable 中的下一个组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12154734/

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