Witam.
Mam oto taki kod.
Działa on w sposób, że zmienia tytuł okna jeżeli wprowadzimy z klawiatury poprawnie słowo "secret"
Moim zadaniem jest tak go zmodyfikować aby działał w identyczny sposób lecz bez użycia metody keyReleased();
Mimo prób i poszukiwań w internecie nie udało mi się rozwiązać tego problemu.
Kiedy używamy metody keyReleased() pomimo przytrzymania przypisze wartość dla
char c
Jednak w metodzie keyPressed() już tak się nie da. Jak w takim razie zmodyfikować kod, aby pomimo przytrzymania klawisza zapisywał wartość w zmiennej c?
*Mam nadzieję, że zrozumiecie o co mi chodzi. Późna godzina i zdania dziwnie się klecą. :/
import java.awt.Dimension;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
public class KeyTest extends JFrame implements KeyListener {
private int counter = 0;
private String userInput = "";
private final String secret = "secret";
public KeyTest() {
super("KeyListener Test");
setPreferredSize(new Dimension(300, 100));
addKeyListener(this);
pack();
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
@Override
public void keyPressed(KeyEvent evt ) {
}
@Override
public void keyReleased(KeyEvent evt) {
char c = evt.getKeyChar();
if(counter < secret.length())
checkSecret(c);
}
@Override
public void keyTyped(KeyEvent evt) {
}
private void checkSecret(char c) {
if(c == secret.charAt(counter)) {
counter++;
userInput = userInput+c;
}
else {
counter = 0;
userInput = "";
}
if(userInput.equals(secret))
setTitle("Sekretne hasło");
}
}