Java: JPanel nicht empfangen kann, wichtige Ereignisse, wenn der Knopf geklickt wird (die keine registrierten event-listener)?

Zuerst einmal herzlichen Dank für die Zeit nehmen, zu Lesen, meine Frage, ich weiß es zu schätzen.

Hier die übersicht was habe ich jetzt:

Ich Schreibe ein slider puzzle-Spiel, 3 von 3 Verwendung der Tasten als grid-Zellen. Ich habe ein key listener auf das JPanel, das hält Sie diese Tasten, und Sie reagieren auf Tastatur-Ereignisse nur in Ordnung.

Jedoch, das problem ist etwas eigenartig, und ich habe nicht wirklich in der Lage zu lokalisieren, warum macht es dieses erratische Verhalten. Nach einem Klick auf einen der "buttons", von denen keine Ereignis-Listener registriert, keiner der buttons bewegen, aber wenn Sie Folgen, dass mit einem Schlüssel-Ereignis, das die Tasten nicht mehr reagiert.

Meine Frage ist: ich weiß, das ist ziemlich vage, aber ist dieser ring eine Glocke für jedermann, um ein Java-problem sein, oder klingt er wie mein fehlerhafter code, der hinter all dem?

Ich bin wirklich offen für jegliche Vorschläge, da dieser mich stört, für etwa eine Woche jetzt, und ich weiß immer noch nicht, was das problem verursacht.

Einmal, ich danke Ihnen für die Zeit nehmen, zu Lesen in dieser.

@trashgod: ja, natürlich.

public class Test2 extends JPanel{
JButton a = new JButton("A");

Test2(){
    setFocusable(true);
    //Set layout to grid layout
    setLayout(new GridLayout(3, 3));
    //Add button
    //a.setEnabled(false);
    add(a);

    //Register key event which shifts it to the next cell when the right arrow is pressed
    addKeyListener(new KeyAdapter(){
        public void keyPressed(KeyEvent e){
            if (e.getKeyCode() == KeyEvent.VK_LEFT) {
                remove(a);
                JButton b = new JButton("B");
                //b.setEnabled(false);
                add(b);
                add(a);
                validate();

            }
        }
    });
}

}

Funktion der code-Zeile: JPanel erhält zentrale Ereignis, die linke Pfeiltaste, um genau zu sein, entfernt, Taste 'a', und fügt eine neue Schaltfläche 'b', gefolgt von der Taste 'a' zu jeder Zeit. Allerdings, wenn Sie versuchen, und führen Sie das Programm, nachdem Sie auf eine Schaltfläche klicken, Stoppt er halt Zuhören, um wichtige Ereignisse.

Habe ich nur bezahlt, einige Gedanken an Sie, könnte es damit etwas zu tun haben mit dem Fokus verloren im JPanel? Wenn ja, welche Methoden sollte ich achten, um zu wiederherstellen der Fokus verloren?

Dank!

(btw, die setEnabled Kommentare ist mein Versuch, dieses problem zu lösen, indem Sie einfach die Schaltfläche deaktivieren, aber es immer noch nicht erklären, wie die Wiederherstellung der verloren den Fokus auf das JPanel, wenn das ist das problem bei der hand.)

  • Bitte geben Sie eine sscce, die zeigt das problem, das Sie beschreiben.
  • Beachten Sie, dass eine SSCCE sollte include importiert. BTW "nächste Zelle, wenn der Rechte Pfeil gedrückt wird," Welcher Teil der KeyEvent.VK_LEFT docs " - Konstante für das non-numpad Links - Taste." hatten Sie Schwierigkeiten zu verstehen? Wenn Sie Kommentare im code, damit Sie match der code selbst. 😉
  • Danke für das Lesen meiner Frage, und ja, ich verstehe, dass es ist die linke Pfeil-Taste. Ein Fehler in einem Kommentar, ich Dummerchen, danke für die Erinnerung! 😛 Aber, was kam, um meine Sorge war, dass die Unfähigkeit, für das JPanel zu erhalten, wesentliche Ereignisse nach dem ein button gedrückt wurde, das war leicht behoben werden, indem ein ActionListener zu den buttons, welche wiederhergestellt den Fokus auf das JPanel auf klicken Sie auf. Wieder einmal, vielen Dank! 😀
  • Bitte fügen Sie Ihrem code eine Antwort, und markieren Sie diese Antwort als 'akzeptiert' Antwort.
Schreibe einen Kommentar