java - 如何在 DrawingPanel 中将按键按下为字符

标签 java bluej

我正在编写一个简单的游戏,作为 Java 项目的一部分。我正在使用 DrawingPanel 窗口,并且需要能够将当前按下的键盘按键作为字符获取。具体来说,我有 DrawingPanel 类和游戏类,并且需要从游戏类的 public static void main 中获取 char 变量。

我注意到 DrawingPanel 包含 KeyListener 方法,特别是 onKeyDown,但我不知道如何使用它。这是一个 void 方法,所以我不知道如何将按下的键作为输出,也不知道 DPKeyEventHandler 输入的用途。

最佳答案

我认为通过阅读一些有关 java 中的 KeyListeners 的内容,您将能够做您想做的事情。

为了让您开始,请查看此代码及其行为方式:

import java.awt.BorderLayout;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JFrame;
import javax.swing.JTextField;

public class KeyEventClass extends JFrame implements KeyListener {

public KeyEventClass(){
    this.setLayout(new BorderLayout());
    JTextField field = new JTextField();
    field.addKeyListener(this);
    this.add(field, BorderLayout.CENTER);
    this.pack();
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setLocationRelativeTo(null);
    this.setVisible(true);
}

public void keyTyped(KeyEvent e) {
    System.out.println("KeyTyped: ");
    if(e.getKeyChar() == KeyEvent.CHAR_UNDEFINED){
        System.out.println("No Unicode-Character typed!");
    }else{
        System.out.println(e.getKeyChar() + " typed!");
    }
    System.out.println("---");
}
public void keyPressed(KeyEvent e) {
    System.out.println("Key: " + e.getKeyChar() + ", Code: " + e.getKeyCode());
    System.out.println("Key-Location: " + e.getKeyLocation());
    System.out.println("---");
}

public void keyReleased(KeyEvent e) {
    System.out.println("KeyReleased: ");
    if(e.getKeyCode() == KeyEvent.VK_SPACE){
        System.out.println("ABORT!");
        System.exit(0);
    }    
    System.out.println("Key: " + e.getKeyChar() + ", Code: " + e.getKeyCode());
    System.out.println("---");
}

public static void main(String[] args) {
    new KeyEventClass();
}
}

有关它的更多信息:

https://examples.javacodegeeks.com/desktop-java/awt/event/a-complete-keylistener-example/

关于java - 如何在 DrawingPanel 中将按键按下为字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56398210/

相关文章:

java - 程序进行覆盖

java - BlueJ - 找不到tools.jar

java - 将 Apache POI 导入 eclipse 项目并使其可以在另一台计算机上使用

java - 如何在 JavaFX 中创建对话框

java - 随机数生成器继续包含 0

java - Java 中的偶数

java - 在将 Java 日期写入 SQL TIMESTAMP 列之前,JDBC 是否会将日期从 JVM 时区转换为数据库 session 时区?

java - Java 中出现很多错误,对角矩阵问题

java - 有没有可以测试代码片段的java工具?