Как получить клавишу нажатой как char в DrawingPanel - PullRequest
0 голосов
/ 31 мая 2019

Я собираю простую игру как часть проекта на Java.Я использую окно DrawingPanel, и мне нужно, чтобы текущая клавиша была нажата как символ.В частности, у меня есть класс DrawingPanel и класс для игры, и мне нужно получить переменную char из общедоступной статической основной пустоты игрового класса.

Я заметил, что DrawingPanel содержит методы KeyListener, в частности onKeyDown,но я понятия не имею, как это использовать.Это пустой метод, поэтому я не знаю, как бы я нажал клавишу в качестве вывода, и при этом я не знаю, для чего предназначен ввод DPKeyEventHandler.

1 Ответ

0 голосов
/ 31 мая 2019

Я думаю, что, почитав KeyListeners в Java, вы сможете делать то, что вы хотите.

Чтобы дать вам что-то для начала, посмотрите на этот код и его поведение:

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/

...