gpt4 book ai didi

java - 任何人都知道改变 Jlist 默认移动单元格焦点行为的方法吗?

转载 作者:行者123 更新时间:2023-11-29 06:12:54 26 4
gpt4 key购买 nike

我的 jlist 是一个单元格为正方形且大小固定的单元格,并且视口(viewport)充满了它们,因此列数(我猜是行数)实际上可以改变。

我的代码相当复杂:

http://code.google.com/p/bookjar-utils/source/browse/BookJar-utils/src/util/swing/components/ImageList.java

我想要做的是允许使用箭头键进行不同的键盘移动 - 如果所选单元格与视口(viewport)的西边或东边相交,则不仅使用 ↑ 和 ↓ 上下移动行还允许 ← 和 → .

我是否应该只计算一个“行”中适合多少个单元格,并为箭头添加一个键监听器,当默认行为似乎无所事事时接管箭头?

就此而言,原始行为在哪里定义?如果 ← 和 → 键不在行的边缘,则它们允许在一行中移动。

最佳答案

在 Swing 中,每个小部件都有自己的 UI 类来控制其行为。 LookAndFeel 管理小部件和 UI 之间的这些链接 (architecture overview)。

所以恕我直言,做你要求的正确地方是扩展 BasicTableUI 并覆盖为键盘操作定义小部件 ActionMap 的方法,用你自己的实现替换一些操作:

class MyTableUI extends BasicTableUI {
...

@Override
protected void installKeyboardActions() {
super.installKeyboardActions();
final ActionMap actionMap = getTable().getActionMap();
actionMap.put( NEXT_ROW,
new MyNewRowSelectionAction( NEXT_ROW, actionMap.get( NEXT_ROW ) ) );
...

请注意,ActionMap 的键在 BasicTableUI.Actions 中是私有(private)的,因此需要复制它们。

关于java - 任何人都知道改变 Jlist 默认移动单元格焦点行为的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6175133/

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