gpt4 book ai didi

java - 我们是否可以在框架提供的 ActionMap 中找到 Actions 的实际代码?

转载 作者:行者123 更新时间:2023-11-30 03:19:38 26 4
gpt4 key购买 nike

目前我特别感兴趣的是 JTable 的“取消”操作...特别是我试图找出为什么在为 JTable 的 CellEditor 组件(JTextField)设置了 InputVerifier 后,IV 的 shouldYieldFocus () 方法不是被调用一次,而是当我按 Escape 时被调用两次 (!)。

我已经检查过,这里运行的是 JTable 的 ActionMap 条目 VK_CANCEL(“取消”)。

此外,我发现当我像这样按 Escape 时,不会调用 JTable 的 EditingCanceled 方法...这反过来又使得目前让 IV 知道取消操作正在发生(因此验证不应该)变得有点困难被称为)。

当然,创建我自己的“取消”操作很容易,它调用从 JTable 的 ActionMap 获取的取消操作,而且还设置一个标志“忽略 JTF 的文本...我们正在取消”。但我只是想看看取消操作实际上包含什么......即代码。

稍后
查看一两个类(特别是 JComponent 和 AbstractCellEditor)的源代码后,发现当发出取消焦点的请求时,IV 的 shouldYieldFocus 似乎会被触发,这也许并不奇怪。

我还没有解决我的具体问题,我仍然想知道是否可以找到这些 ActionMap Actions 的代码...

最佳答案

是的。正如所讨论的here ,并如图所示hereTextAction 的子类安装为key bindings通过文本组件的 UI 委托(delegate),通常是 BasicTextUI 的子类。每个 Action 通常是嵌套在相关编辑器工具包中的类的实例。例如,DefaultEditorKit包括多个 public 操作,以及大量 package-private内部使用的操作。

名为 "cancel"Action 的处理程序可以在 JTable UI 委托(delegate)中找到,通常是BasicTableUI .

Validating Input 中所述,确保您的 verify() 实现没有副作用。检查一个完整的示例 herehereTableCellEditor 中使用 InputVerifier 的示例和 here .

通过 com.apple.laf.AquaLookAndFeelWHEN_FOCUSED 绑定(bind)到 JTextField 的操作和键:

beep:
caret-backward: LEFT, KP_LEFT, ctrl B
caret-begin: ctrl P, meta UP, meta KP_UP, HOME
caret-begin-line: KP_UP, ctrl A, UP, meta KP_LEFT, meta LEFT
caret-begin-paragraph:
caret-begin-word:
caret-down:
caret-end: ctrl N, END, meta KP_DOWN, ctrl V, meta DOWN
caret-end-line: DOWN, meta KP_RIGHT, ctrl E, meta RIGHT, KP_DOWN
caret-end-paragraph:
caret-end-word:
caret-forward: RIGHT, ctrl F, KP_RIGHT
caret-next-word: alt KP_RIGHT, alt RIGHT
caret-previous-word: alt KP_LEFT, alt LEFT
caret-up:
copy:
copy-to-clipboard: meta C, COPY
cut:
cut-to-clipboard: CUT, meta X
default-typed:
delete-next: DELETE, ctrl D
delete-next-word: alt DELETE
delete-previous: BACK_SPACE, ctrl H
delete-previous-word: alt BACK_SPACE, ctrl W
dump-model:
insert-break:
insert-content:
insert-tab:
notify-field-accept: ENTER
page-down:
page-up:
paste:
paste-from-clipboard: meta V, PASTE
requestFocus:
select-all: meta A
select-line:
select-paragraph:
select-word:
selection-backward: shift LEFT, shift KP_LEFT
selection-begin: shift meta KP_UP, shift meta UP, shift HOME
selection-begin-line: shift UP, shift meta KP_LEFT, shift KP_UP, shift meta LEFT
selection-begin-paragraph:
selection-begin-word:
selection-down:
selection-end: shift meta DOWN, shift meta KP_DOWN, shift END
selection-end-line: shift meta KP_RIGHT, shift DOWN, shift KP_DOWN, shift meta RIGHT
selection-end-paragraph:
selection-end-word:
selection-forward: shift KP_RIGHT, shift RIGHT
selection-next-word: shift alt KP_RIGHT, shift alt RIGHT
selection-page-down: shift PAGE_DOWN
selection-page-left: shift meta PAGE_UP
selection-page-right: shift meta PAGE_DOWN
selection-page-up: shift PAGE_UP
selection-previous-word: shift alt LEFT, shift alt KP_LEFT
selection-up:
set-read-only:
set-writable:
toggle-componentOrientation: shift ctrl O
unselect: meta BACK_SLASH

关于java - 我们是否可以在框架提供的 ActionMap 中找到 Actions 的实际代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31659063/

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