Я пытаюсь сделать рекордер для игры, которую я сделал, и я хочу использовать keylistener, но ничего не происходит.Java Как сделать Keylistener?
вот часть моего кода, которая нуждается в исправлении.
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.*;
import java.io.*;
public class score extends JPanel {
public static char highchar[] = new char[10];
public static int i = 0;
public static boolean flag = true;
public static void scr() {
JFrame f = new JFrame("HighScores");
score c = new score();
f.setContentPane(c);
f.setLocation((int) (Toolkit.getDefaultToolkit().getScreenSize()
.getWidth() - 13)/2 - 200, (int) (Toolkit.getDefaultToolkit()
.getScreenSize().getHeight() - 63)/2 - 100);
c.setPreferredSize(new Dimension(400, 200));
f.pack();
f.setResizable(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.getContentPane();
f.setVisible(true);
while (flag) {
c.repaint();
}
}
public score() {
addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
System.out.println("hello");
if (flag) {
if (e.getKeyCode() == KeyEvent.VK_A) {
highchar[i] = 'A';
}
if (e.getKeyCode() == KeyEvent.VK_B) {
highchar[i] = 'B';
}
if (e.getKeyCode() == KeyEvent.VK_C) {
highchar[i] = 'C';
}
if (e.getKeyCode() == KeyEvent.VK_D) {
highchar[i] = 'D';
}
if (e.getKeyCode() == KeyEvent.VK_E) {
highchar[i] = 'E';
}
if (e.getKeyCode() == KeyEvent.VK_F) {
highchar[i] = 'F';
}
if (e.getKeyCode() == KeyEvent.VK_G) {
highchar[i] = 'G';
}
if (e.getKeyCode() == KeyEvent.VK_H) {
highchar[i] = 'H';
}
if (e.getKeyCode() == KeyEvent.VK_I) {
highchar[i] = 'I';
}
if (e.getKeyCode() == KeyEvent.VK_J) {
highchar[i] = 'J';
}
if (e.getKeyCode() == KeyEvent.VK_K) {
highchar[i] = 'K';
}
if (e.getKeyCode() == KeyEvent.VK_L) {
highchar[i] = 'L';
}
if (e.getKeyCode() == KeyEvent.VK_M) {
highchar[i] = 'M';
}
if (e.getKeyCode() == KeyEvent.VK_N) {
highchar[i] = 'N';
}
if (e.getKeyCode() == KeyEvent.VK_O) {
highchar[i] = 'O';
}
if (e.getKeyCode() == KeyEvent.VK_P) {
highchar[i] = 'P';
}
if (e.getKeyCode() == KeyEvent.VK_Q) {
highchar[i] = 'Q';
}
if (e.getKeyCode() == KeyEvent.VK_R) {
highchar[i] = 'R';
}
if (e.getKeyCode() == KeyEvent.VK_S) {
highchar[i] = 'S';
}
if (e.getKeyCode() == KeyEvent.VK_T) {
highchar[i] = 'T';
}
if (e.getKeyCode() == KeyEvent.VK_U) {
highchar[i] = 'U';
}
if (e.getKeyCode() == KeyEvent.VK_V) {
highchar[i] = 'V';
}
if (e.getKeyCode() == KeyEvent.VK_W) {
highchar[i] = 'W';
}
if (e.getKeyCode() == KeyEvent.VK_X) {
highchar[i] = 'X';
}
if (e.getKeyCode() == KeyEvent.VK_Y) {
highchar[i] = 'Y';
}
if (e.getKeyCode() == KeyEvent.VK_Z) {
highchar[i] = 'Z';
}
if (e.getKeyCode() == KeyEvent.VK_SPACE) {
highchar[i] = ' ';
}
if (e.getKeyCode() == KeyEvent.VK_0) {
highchar[i] = '0';
}
if (e.getKeyCode() == KeyEvent.VK_1) {
highchar[i] = '1';
}
if (e.getKeyCode() == KeyEvent.VK_2) {
highchar[i] = '2';
}
if (e.getKeyCode() == KeyEvent.VK_3) {
highchar[i] = '3';
}
if (e.getKeyCode() == KeyEvent.VK_4) {
highchar[i] = '4';
}
if (e.getKeyCode() == KeyEvent.VK_5) {
highchar[i] = '5';
}
if (e.getKeyCode() == KeyEvent.VK_6) {
highchar[i] = '6';
}
if (e.getKeyCode() == KeyEvent.VK_7) {
highchar[i] = '7';
}
if (e.getKeyCode() == KeyEvent.VK_8) {
highchar[i] = '8';
}
if (e.getKeyCode() == KeyEvent.VK_9) {
highchar[i] = '9';
}
if (e.getKeyCode() == KeyEvent.VK_BACK_SPACE) {
i--;
highchar[i] = ' ';
i--;
}
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
flag = false;
}
i++;
System.out.println(highchar[i]);
}
}
});
}
}
Можете ли вы исправить keylistener без изменения метода scr?
Возможный дубликат [Java - программа с KeyListener не работает] (http://stackoverflow.com/questions/14298745/java-program-with-keylistener-isnt-working) и * много * похожих вопросов. Подумайте о том, чтобы немного поработать над вашими навыками Google. –
_i хотите использовать keylistener_ no, вы не :-) Независимо от проблемы, keyListener не является решением, и ваш контекст не является одним из редких исключений – kleopatra