gpt4 book ai didi

java - 使用 JCanvas 时获取 KeyPressed

转载 作者:行者123 更新时间:2023-12-01 12:15:27 26 4
gpt4 key购买 nike

我正在使用 JCanvas 创建一个简单的 Java 应用程序,我需要获取用户按下的按键的按键代码:以下是 Java 代码的简化版本

  import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.util.EventObject;
import java.awt.event.*;
// myJavaFiles project contains JCanvas & JEventQueue Classes
import myJavaFiles.*;
import javax.swing.*;

public static void main(String[] args) {

JCanvas canvas = new JCanvas();
JEventQueue events = new JEventQueue();
events.listenTo(canvas, "canvas");

JFrame frame = new JFrame();
frame.setSize(700, 700);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setFocusable(true);
frame.add(canvas);

while (true) {
if (events.hasEvent()){
EventObject event = events.waitEvent();
if(JEventQueue.isKeyPressed(event)){
int keycode = events.getKeyCode(event);

// USE KEYCODE!!!

}
}
canvas.sleep(10);
canvas.clear();
}
}

一切正常(我省略了很多不相关的代码),除了按下按键之外,我确实注意到当我按下一个键时 events.hasEvent 甚至看起来都不为真!

请帮忙!我究竟做错了什么?

最佳答案

如果没有 JCanvas 和 JEventQueue 的代码,这有点困难,但通常我会为包含 Canvas 的面板使用关键监听器:

//frame.add(canvas);

final JPanel panel = new JPanel();
panel.add(canvas);
frame.getContentPane().add(panel);
panel.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(final KeyEvent keyEvent) {
System.out.println("keyEvent.getKeyCode(): " + keyEvent.getKeyCode());
}
});

关于java - 使用 JCanvas 时获取 KeyPressed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27043582/

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