当前位置: 首页 > 面试题库 >

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

吕冠宇
2023-03-14
问题内容

JTable的默认行为是将焦点更改为下一个单元格,我想在按TAB键时强制其将焦点移至下一个组件(例如JTextField)。
我重写的isCellEditable方法DefaultTableModel始终返回false:

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

但这仍然不会改变对下一个组件的关注!
我应该如何JTable将重点放在下一个组件而不是下一个单元格上?


问题答案:

如果确实要这样做,则需要更改表操作映射的默认行为。

ActionMap am = table.getActionMap();
am.put("selectPreviousColumnCell", new PreviousFocusHandler());    
am.put("selectNextColumnCell", new NextFocusHandler());

然后,您需要执行一些操作来处理遍历

public class PreviousFocusHandler extends AbstractAction {
    public void actionPerformed(ActionEvent evt) {
        KeyboardFocusManager manager = KeyboardFocusManager.getCurrentKeyboardFocusManager();
        manager.focusPreviousComponent();
    }
}

public class NextFocusHandler extends AbstractAction {
    public void actionPerformed(ActionEvent evt) {
        KeyboardFocusManager manager = KeyboardFocusManager.getCurrentKeyboardFocusManager();
        manager.focusNextComponent();
    }
}

另一种方法是禁用底层Action

ActionMap am = table.getActionMap();
am.get("selectPreviousColumnCell").setEnabled(false);
am.get("selectNextColumnCell").setEnabled(false);

(尚未测试)

这种方法的好处是可以根据需要启用/禁用行为,而无需维护对旧行为的引用。 Actions



 类似资料:
  • 问题内容: 我是Python的新手,正在尝试使用Tkinter创建一个简单的GUI。 因此,在许多用户界面中,单击选项卡按钮通常会将焦点从一个Text小部件更改为另一个。每当我在“文本”小部件中时,选项卡只会缩进文本光标。 有人知道这是否可配置吗? 问题答案: 使用Tkinter可以很容易地做到这一点。 要使此工作生效,必须完成几件事。首先,您需要确保标准行为 不会 发生。也就是说,您不希望标签页

  • 问题内容: 摘要: 在我的桌面应用程序中,我加载了一个Jtable,并且在编辑模式下(如果我按Tab键)我需要将单元格的焦点放在下一个单元格上。 问题: 当我编辑单元格的值,然后按Tab时,焦点丢失。我在网上做了一些搜索,发现发生这种情况是因为在每个Tab上按下Jtable都会重新加载自身。 可能的解决 方案我想到的一个解决方案是获取正在使用的单元格的索引,将其与全局变量相同,然后在Tab键上按一

  • 总结: 在我的桌面应用程序中,我加载一个Jtable,当处于编辑模式时,如果我按选项卡,我需要将单元格的焦点放在下一个单元格上。 问题:当我编辑单元格的值,然后按Tab键时,焦点丢失。我在网上做了一些搜索,发现这是因为在每个选项卡上按Jtable会重新加载自己。 可能的解决方案我正在考虑的一个解决方案是获取我正在处理的单元格的索引,在全局变量中也是如此,然后按Tab键可以获取下一个单元格的索引,并

  • 我创建了一个Jframe,它由Jbutton(Ok)、Jbutton(cancel)、Jtextfield和一个Jtable组成。我想当按下OK按钮时,焦点变为Jtextfield,当按下增益按钮时,焦点变为JTable。 如何在组件之间更改焦点? 这就是我尝试过的: 它只关注JTextfield,但不会将焦点更改为JTable 编辑:我也试过: 但没有奏效 这是整个代码:

  • 问题内容: 如前所述,我想更改内的默认TAB行为(以使其充当类似或类似的组件) 这是事件动作 这是听众 我也尝试过evt.KEY_TYPED,没有任何喜悦。 有任何想法吗? 快速编辑:我也尝试代替 问题答案: 根据此类: 请注意,可以更短,根据[约书亚·戈德堡的意见,因为我们的目标是获得通过重写回默认行为: 这用于问题“ 我如何修改标签中的Tab键的行为JTextArea? ” 在以前的实现确实是

  • 因此,我有一个标准的,它获取帖子列表并向用户显示。我的问题是,当用户进入活动时,我希望能够将焦点更改为特定的帖子。 例如,用户A看到他收到一个通知,表示有人喜欢他/她的帖子。他/她单击该通知,它将加载用户帖子的活动,然后焦点将更改为用户喜欢的帖子的位置。 我使用意图将传递给活动。然后,我运行,并尝试查看帖子的ID是否与我通过intent发送的