- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在用 Java 创建一个小的跳转和运行。我最近想从 KeyListener 切换到 Inputmap,因为 KeyListener 有时似乎没有响应。
我有一个名为 Window 的自定义 JFrame,其中包含 JPanel 和以下代码:
public class EditorGamePanel extends JPanel {
Window parent;
MainGame maingame;
public EditorGamePanel(Window parent) {
this.parent = parent;
setLayout(null);
Canvas canvas = new MainGame(parent);
canvas.setBounds(0, 0, 1920, 1080);
add(canvas);
maingame = (MainGame) canvas;
InputMap im = getInputMap(WHEN_IN_FOCUSED_WINDOW);
ActionMap am = getActionMap();
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_SHIFT, 0, false), "pressed");
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_SHIFT, 0, true), "released");
am.put("pressed", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Pressed");
}
});
am.put("released", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("released");
}
});
}
}
问题是它没有记录我按下 Shift 键,但它确实记录我松开 Shift 键。其他键(例如 w)似乎两种方式都可以正常工作。我似乎在文档中找不到任何错误或任何帮助。
最佳答案
您可能使用了错误的 KeyStroke 作为下移键击。而不是:
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_SHIFT, 0, false), "pressed");
尝试:
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_SHIFT, InputEvent.SHIFT_DOWN_MASK, false), "pressed");
因为如果掩码设置为 0,则该击键无效。
关于Java InputMap 不注册 Shift 按键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51681685/
我想在我的 Swing 应用程序中有一个自定义 Tab 和 Shift+Tab 监听器。这适用于 JTextField textField 当按下 TAB 键时=> textField.getInpu
为什么我们必须使用额外的对象ActionMap? 什么意思? 以此为例: imap.put(KeyStroke.getKeyStroke("ctrl Y"), "panel.yellow"); Act
我终于完全切换到 JavaFX。 我非常热衷于按键功能。 是否有与您在 Swing 中找到的(非常好的)热键架构等效的热键架构?对于 JavaFX 文本控制对象,它是如何工作的?我想如果我看一下jav
我的代码有这个问题,我正在尝试学习如何在 Java 中使用击键,并且我希望能够跟踪我按下了哪些击键。我正在尝试使用 KeyEvent.VK_UP 来跟踪我按下的内容。 import java.awt.
我通过修改 jCompInstance.getInputMap() 返回的映射,添加了对 JComponent 的输入映射的绑定(bind)。 我第一次按下已绑定(bind)的键时,效果很好。不知何故
显然有人问过这个问题before和 before和 before ,但要么答案不能解决问题,要么使用我无法理解的语言。 我必须使用 JComponent.WHEN_IN_FOCUSED_WINDOW
我正在用 Java 构建一个 2d 游戏,我决定使用 Canvas 来显示与当前帧相关的图像。我正在使用 Canvas,因为我听说它在时间方面比 JPanel 更有效。是真的吗? 此外,我想通过键绑定
我目前正在用 Java 创建一个小的跳转和运行。我最近想从 KeyListener 切换到 Inputmap,因为 KeyListener 有时似乎没有响应。 我有一个名为 Window 的自定义 J
我想给组件添加一个加速器,比如对 JTextComponent 执行撤消/重做(Ctrl-Z、Ctrl-Y),但想在JMenu,我应该将 KeyStroke + AbstractAction 添加到:
我一直在阅读有关使用多个组件注册“Action”对象的文章,我发现了将 Action 对象注册(绑定(bind))到 Keystroke 的方法目的。 在追寻中我遇到了这段代码: InputMap i
你好,在我当前的一个项目中,我想实现一个 InputMap。所以我有一个抽象的输入 //Input.h namespace INPUT { class InputMap; class Input {
我找不到关于所有这些之间关系的简明答案,所以我可以选择最佳实践并继续前进。 JTextComponent有: 旧的 addKeyListener(..)。我们编写一个 KeyListener,其中包含
我希望我的 JTextField 不仅在按下 ENTER 时处理文本,而且当按下空格键时。您可以在下面的代码中看到,我将通常与 ENTER 关联的操作关联到 SPACE,但我得到了一些意外行为(见下文
class Person { private String name; private String birthDate; private String city; p
我尝试让对话框在按 ESC 时关闭,并在按 ENTER 时接受。所以我使用 Input/ActionMap 构建了一个父类(super class)“CloseableDialog”,如下所示:
我已经为带有 InputMap 的 Swing 应用程序实现了一些热键 getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke
问题描述:我有一个 JFrame,在这个 JFrame 里面有一个带按钮的 JPanel,当我按下按钮时,一个 Action 监听器将当前的 JPanel 更改为一个新的 JPanel,其中包含另外两
在 java 中运行一个 swing 应用程序,我的程序中出现了这个异常。值得注意的是,我每次运行程序时都不会出现这种情况。 完整的堆栈跟踪: Exception in thread "main" j
我遇到了一个似乎有些独特的问题。我目前正在尝试将鼠标事件编码到我的程序中,即某种游戏引擎。我的问题是: 当单击/释放鼠标时,我想调用已经编写为 Enter 键操作的代码。 在我的 Binds 类中,我
我有一个自定义组件(继承自 JComponent),我喜欢在按住 CTRL 的同时为链接添加下划线,就像 eclipse 一样。我决定使用 InputMap 和 ActionMap 来实现按键/释放功
我是一名优秀的程序员,十分优秀!