Hallo,
für ein 2D-Spiel habe ich einen Cheat-Modus eingebaut. Um diesen zu aktivieren, klickt man in die linke obere Ecke und muss beim dann erscheinenden JPasswordField das korrekte Passwort eingeben.
Das klappt so weit ganz gut, nur hängt sich das Programm auf, wenn man etwas im Feld eingibt.
Der Prozess läuft noch normal und es werden auch keine Exceptions ausgeworfen, aber nichts reagiert mehr und das Spiel bleibt auch stehen.
Ein einziges Mal wurde ein NullPointer auf diese Zeile ausgeworfen:
Ich benutze KeyBindings auf das JPanel, sodass Tastatureingaben unabhängig vom Fokus immer erkannt werden. Alle registrierten Tasten funktionieren, aber sobald ich eine andere im Passwortfeld drücke, bleibt das Programm stehen und ich kann nichts mehr machen.
Ich benutze auch keinen Layout-Manager, könnte das damit zusammenhängen?
Ja, ich weiß, dass man das nicht machen soll, aber ich habe nicht mehr sonderlich viel Zeit, mich Layout zu beschäftigen.
Hier werden alle Komponenten erstellt und auf das JPanel gelegt (Alles außer dem Passwortfeld habe ich raus gekürzt)
für ein 2D-Spiel habe ich einen Cheat-Modus eingebaut. Um diesen zu aktivieren, klickt man in die linke obere Ecke und muss beim dann erscheinenden JPasswordField das korrekte Passwort eingeben.
Das klappt so weit ganz gut, nur hängt sich das Programm auf, wenn man etwas im Feld eingibt.
Der Prozess läuft noch normal und es werden auch keine Exceptions ausgeworfen, aber nichts reagiert mehr und das Spiel bleibt auch stehen.
Ein einziges Mal wurde ein NullPointer auf diese Zeile ausgeworfen:
Java:
frame.getLayeredPane().paintComponents(graphics);
Ich benutze KeyBindings auf das JPanel, sodass Tastatureingaben unabhängig vom Fokus immer erkannt werden. Alle registrierten Tasten funktionieren, aber sobald ich eine andere im Passwortfeld drücke, bleibt das Programm stehen und ich kann nichts mehr machen.
Ich benutze auch keinen Layout-Manager, könnte das damit zusammenhängen?
Ja, ich weiß, dass man das nicht machen soll, aber ich habe nicht mehr sonderlich viel Zeit, mich Layout zu beschäftigen.
Hier werden alle Komponenten erstellt und auf das JPanel gelegt (Alles außer dem Passwortfeld habe ich raus gekürzt)
Java:
JPasswordField devPre_passwordField = new JPasswordField(10);
devPre_passwordField.setBounds(10, 10, 120, 25);
devPre_passwordField.addActionListener(new ActionListener() {
char[] correctPassword = {'d', 'e', 'v', 'e', 'l', 'o', 'p', 'e', 'r'};
@Override
public void actionPerformed(ActionEvent event) {
char[] input = devPre_passwordField.getPassword();
if(input.length == correctPassword.length && input.equals(correctPassword)) {
main.setStatus(GameStatus.DEV_MAIN);
}else {
devPre_passwordField.setText("");
main.setStatus(GameStatus.GAME);
}
}
});
hideAll();
showMainMenu();
panel.add(devPre_passwordField);