有谁知道改变Jlist默认移动单元格焦点行为的方法吗?

问题描述

| 我的jlist是这样的单元格,其中单元格是正方形且具有固定大小,并且视口已被它们填满,因此列数(我想是行数)实际上可以改变。 我执行此操作的代码相当复杂: http://code.google.com/p/bookjar-utils/source/browse/BookJar-utils/src/util/swing/components/ImageList.java 我想做的是允许使用箭头键进行不同的键盘移动-如果选定的单元格与视口的西边或东边相遇,则不仅仅使用↑和↓上下移动行,还允许←和→。 我应该只计算\“行\”中容纳多少个单元格,并为默认行为似乎无能为力时在边缘接管的箭头添加关键侦听器? 为此,原始行为在哪里定义?如果←和→键不在行的边缘,则它们可以在一行中移动。     

解决方法

        在Swing中,每个小部件都有其自己的UI类来控制其行为。 LookAndFeel管理小部件和UI之间的这些链接(体系结构概述)。 因此,恕我直言,正确执行操作的地方是扩展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中是私有的,因此需要复制它们。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...