java - 为动态添加的按钮添加全局键盘快捷键

标签 java swing

我在设置动态添加按钮的快捷方式时遇到一些困难。按钮位于动态添加的面板上。我想为这些按钮添加键盘快捷键,如下所示:

ctrl+1 -> button1
ctrl+2 -> button2
etc.

按钮是通过算法添加的,所以我不知道会有多少个按钮(最少 0,最多 5)。我想用全局(在整个面板中工作)键盘快捷键来调用这些按钮。我想知道如何实现这一点,当我的按钮上的文本像这样动态制作时:

getNewAmountQueryButton(label)

这使得:

private JButton getNewAmountQueryButton(final Decimal label) {
    JButton temp = new JButton(label.toString());
    ...

我尝试添加按键监听器,但只有当我将焦点放在按钮上时它才有效:

button.addKeyListener(new KeyAdapter() {

        @Override
        public void keyPressed(final KeyEvent e) {
                @Override
                public void run() {
                    if ((e.getKeyCode() == getKeyCode()) && ((e.getModifiers() & InputEvent.CTRL_MASK) != 0)) {
                        model.setAmount(model.getAmount().add(label));
                        field().selectAll();
                        refreshDisplay();
                    }
                }
            });
    });

你知道我该怎么做吗?我想将监听器添加到顶级面板,但当我使用 model.setAmount(model.getAmount().add(label)); 来刷新某些文本字段时,由于缺少此内容,这是不可能的标签参数。

有什么想法吗? 提前致谢!

最佳答案

建议您使用Key Bindings .

基本上,它们不会遇到与 KeyListeners 相同的焦点问题

关于java - 为动态添加的按钮添加全局键盘快捷键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16054497/

相关文章:

java - Hibernate:实体词汇(内存存储)

java - 使用通用返回类型覆盖抽象枚举方法时出现编译错误

java - Swing,远程桌面异常

java - 单击时 JTable 恢复为旧单元格

Java:为什么这个 JFrame 按钮不显示?

java - 字谜检查的最佳解决方案?

java - 使用 spring-data-jpa 查询方法加载实体的属性

java - 在 switch 语句中使用 ctrl-z 撤消的未弃用方法

java - 将 JFileChooser 添加到 Eclipse Window Builder

java - @CollectionOfElements 无需创建相应的表