如何在DrawingPanel中将键作为char按下

时间:2019-05-31 15:49:59

标签: java bluej

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

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

1 个答案:

答案 0 :(得分:0)

我认为,通过阅读有关Java中的KeyListener的文章,您将能够做您想做的事。

要让您开始学习,请看以下代码及其行为:

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/