- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要知道是否有可能在按下某个键时只发生一次 Action ,即使该键被按住了一段时间,如果可能的话,怎么做?这是我现在拥有的代码:
if(e.getKeyCode() == KeyEvent.VK_A)
{
attack = true;
moveX = -5;
draw(moveX, moveY);
players.get(username).setImageIcon("attack-left");
}
这是在 keyPressed 方法中,在 keyReleased 中,我将 moveX 设置为 0。因此,如果按下 A,图像应该向左 5 个单位并停止,无论 A 是否仍被按住或它已经发布。但这不起作用,它只是继续向左移动。我尝试使用 keyTyped,但没有用。
提前致谢,如果需要,我可以提供更多代码。
最佳答案
执行此操作的一种方法是将最后一次按下的键保存到一个字段中。然后,如果当前按下的键与上次按下的键相同,则什么都不做。按向上键,清除字段。
下面是一些示例代码:
package com.sandbox;
import javax.swing.JFrame;
import javax.swing.WindowConstants;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.IOException;
public class SwingSandbox {
private static Character lastKey = null;
public static void main(String[] args) throws IOException {
JFrame frame = buildFrame();
frame.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
if (lastKey == null || lastKey != e.getKeyChar()) {
lastKey = e.getKeyChar();
System.out.println("keyTyped: " + lastKey);
}
}
@Override
public void keyPressed(KeyEvent e) {
if (lastKey == null || lastKey != e.getKeyChar()) {
lastKey = e.getKeyChar();
System.out.println("keyPressed: " + lastKey);
}
}
@Override
public void keyReleased(KeyEvent e) {
lastKey = null;
System.out.println("keyReleased");
}
});
}
private static JFrame buildFrame() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setSize(200, 200);
frame.setVisible(true);
return frame;
}
}
不管@schmop 的评论怎么说,我都没有经历过。使用此代码:
package com.sandbox;
import javax.swing.JFrame;
import javax.swing.WindowConstants;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.IOException;
public class SwingSandbox {
public static void main(String[] args) throws IOException {
JFrame frame = buildFrame();
frame.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
System.out.println("keyTyped");
}
@Override
public void keyPressed(KeyEvent e) {
System.out.println("keyPressed");
}
@Override
public void keyReleased(KeyEvent e) {
System.out.println("keyReleased");
}
});
}
private static JFrame buildFrame() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setSize(200, 200);
frame.setVisible(true);
return frame;
}
}
按住一个键打印这个:
keyPressed keyTyped keyPressed keyTyped keyPressed keyTyped keyPressed keyTyped keyPressed keyTyped keyPressed keyTyped keyPressed keyTyped keyPressed keyTyped keyPressed keyTyped keyPressed keyTyped keyPressed keyTyped keyPressed keyTyped keyPressed keyTyped keyPressed keyTyped keyPressed keyTyped keyPressed keyTyped keyPressed keyTyped keyPressed keyTyped keyPressed keyTyped keyPressed keyTyped
关于java - 使 Java 中的 KeyEvent 仅在按住键时发生一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23642854/
对于我的生活,我在互联网上找不到任何帮助。我的目标是编写一个在按住 shift 键并在应用程序上单击鼠标时发生的函数。现在我只关注转变。 我有这门课: public void keyPressed(K
KeyEvent.SHIFT_DOWN_MASK 和 KeyEvent.SHIFT_MASK 有什么区别?Javadoc 说“建议改用 SHIFT_DOWN_MASK”。 最佳答案 如果您查看 val
根据 API 29 中的文档,KeyEvent.getCharacters()已弃用,但我找不到相同的替代方法。 根据文档,它说 "@deprecated no longer used by the
我正在处理一个特定的场景,使用 selenium 上传文档。多次失败后我想自己调试一下代码。这是我的代码和错误。 public void uploadFile(String imagePath) {
在 Firefox 3.6 和 4.0 中,我可以将 KeyboardEvent 的 keyCode 与存储在全局 KeyEvent 中的键的预定义常量进行比较对象(它是 DOM3 规范的一部分)。
我是 Wicket 的新手,我想创建一个 ajax 行为,如果按下功能键,它会调用我的 Javacode。 我的想法是创建一种向浏览器发送一些 Javascript 的行为,只有 F-Key 会导致
我的 java 类文件看起来像 public class SignIn extends Activity { /*** Called when the activity is first create
我注意到 Java KeyEvent 对象有一个 getExtendedKeyCode() 方法和一个 getKeyCode() 方法,它们都返回整数。有什么区别? 最佳答案 Java 的 docum
我想要一个程序,它将使用 KeyEvent 读取一个文件中按下的键,并将其写入下一个文件中的控制台。我设置了 Q 和 W 键,但每当我尝试运行该程序时,它都会发送垃圾邮件“按下 Q 键”和“按下 W
如果我使用 GUI 并且有一个文本字段,用户可以在其中输入内容,然后程序会输入回来,那么我将如何在方法期间访问 KeyEvent? (keyEvent 是当按下 Enter 键时 -> 文本字段中的文
我有一个面板,上面有 Jtextfield只接受数字。因此,当我按 Enter 时将加载用户配置文件。这只是为了查看他的个人资料。 我想要的:当我再次按 ENTER 键时,所有配置文件都将被清除,当我
我想知道如何在按键事件中按下所有按键。例如,我想为 ctrl + f 编写一个监听器来切换全屏。如何检查在一个事件中是否同时按下了 ctrl 和 f ? 编辑1: 我尝试打印 KeyEvent.get
我将在java中创建简单的打字游戏。所以我创建了新的类wordpanel,它扩展了jpanel。除了按键事件之外,一切都正常。当我按下一个键时,所有第一个jlable面板的前景应该更改为黄色.但我认识
我正在用 Java 编写一个语法突出显示文本编辑器,但我遇到了一些问题,我应该做什么,而不是我想要做什么。基本上 KeyEvent 类给我带来了一些问题: KeyTyped 不允许我识别关键是什么所以
我正在制作一种乒乓球游戏,但我有一个问题。我的代码中有一个方法,用于检查用户输入是否按下了某个键。但当我按下(在我的例子中)UP键时它不会执行。 这是代码,抱歉英语不好,请帮助我: import ja
这是一个探索性问题,用于确定我是否应该花时间进行实现,如果它是一条“成本效益”的途径。我承认我还没有尝试自己实现这个。与代码块相比,我更希望获得理解和指导。 我知道可以通过向接收焦点的对象添加 Key
如果我的鸡到达角落,我会尝试限制移动这里是我移动方法的代码 public void move1(){ if(((x=350)) || ((x>=450) && (y>=350))){
我正在尝试使用 JavaFX 创建一个 GUI 环境(仍处于非常早期的阶段),我已经实现了 EventHandler,MouseEvent 工作正常,但 KeyEvent 似乎由于某些原因无法工作。我
我正在开发一个应用程序并卡住了。我有一个普通的简单按钮。我想要做的是,如果我单击此按钮,它的行为就像您在软键盘上按空格键一样。 我该怎么做。一定有办法,因为您可以开发软键盘。 所以重复 xP 如果我按
我需要通过单击链接来模拟按键。必须通过单击链接或类似功能调用键盘快捷键 CTRL++。 最佳答案 您不能使用 JavaScript 调用按键操作。 但是,您可以使用 JavaScript 控制缩放级别
我是一名优秀的程序员,十分优秀!