java - 如何为 JTextField 映射选项(Mac 键盘)的操作?

标签 java macos swing awt jtextfield

看起来选项 up 只能用 AWT 捕获(即添加关键监听器)。有没有一种方法可以做到这一点,而不必使用 AWT?

最佳答案

JTextField 的 Mac OS X UI 委托(delegate)不会将 alt 绑定(bind)到任何 Action 。您可以自由地将组合绑定(bind)到您选择的任何操作。如图How to Use Key Bindings ,下面的示例将 alt 绑定(bind)到为 JTextField 定义的现有 "caret-begin-line",其中将插入符号移至行首。

final JTextField jtf = new JTextField("Test");
jtf.getInputMap().put(
    KeyStroke.getKeyStroke(KeyEvent.VK_UP, KeyEvent.ALT_MASK),
    "caret-begin-line");

可以找到更多示例 here 。如引用的键绑定(bind)实用程序here所示, JTextField 按名称将以下 WHEN_FOCUSED 操作绑定(bind)到指定的键。

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 - 如何为 JTextField 映射选项(Mac 键盘)的操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30784939/

相关文章:

java - 在 Mac OS X 中双击文档文件打开 Java 应用程序

Java 在 MainThread.join() 时更新 GUI?

java - 安装成功后Omnet++ 5.4.1在Ubuntu 18.10上运行错误

java.lang.ExceptionInInitializerError Spring创建Application Context时抛出的异常

java - 快速写入持久队列

java - getText() 无法正常工作

java - if else 语句,等于或小于值

java - 如何在java中将图像转换为字节数组?(不使用bufferedimage)

java - 在 OSX 上启动 JavaFX 应用程序需要什么特别的东西吗?

macos - 在 Mac OS X 的预览应用程序中清除最近的项目..?