Eventos de teclado en JAVA KeyEvent
Dado que el panel que agregó contiene botones, el primer botón recibirá el foco de forma predeterminada, y solo cuando lo haga se podrá formar el evento correspondiente. Debido a que el Marco no puede enfocarse, no puede responder a los eventos. Si cambia el JButton a un JLabel, no habrá ningún problema. JLabel no recibe el foco de forma predeterminada, el foco todavía está en el Marco, por lo que aún responde a los eventos.
Utilice el método anterior o cámbielo a
class MessagePanel extends JPanel {
public MessagePanel() {
setLayout (nuevo GridLayout(8, 1));
JButton b;
for (int i = 0; i lt; 8; i) {
b = nuevo JButton("botón inútil");
b.setFocusable(false);
add(b);