Estoy haciendo un curso online de Java SE y la verdad es que me está dejando muchas dudas. Lo esencial se hacerlo (típicos comandos de if, else, for, while e incluso interfaz gráfica con menus, textos y tal), pero cuando se trata de eventos, amigos, la cosa falla xD
Tengo un ejemplo en los apuntes que ejecuta un programa que te indica la tecla pulsada del teclado. Obviamente es un ejemplo que NO es correcto, ya que la clase principal NO está definida como abstracta, ya que implementa KeyListener. El problema está en que tengo que instanciar la clase principal pero no puedo porque es abstracta.
El código es el siguiente:
Código Java:
Ver original
import javax.swing.*; import java.awt.*; import java.awt.event.*; /** * * @author Pepe */ JLabel etiqueta; //El primer componente será una etiqueta //El segundo componente será un cuadro de texto //Creamos un contenedor en el que agruparemos al botón y a la etiqueta //Le añadimos un borde de dimensiones 30 x 50 x 10 x 50 //Los componentes se distribuirán por columnas //Añadimos el campo de texto y la etiqueta al contenedor panel.add (texto); panel.add (etiqueta); return panel; } { try { //Indicar Look & Feel //Creamos el contenedor de alto nivel JFrame y le damos un nombre caja.setSize(350, 250); EjemploEventos app = new EjemploEventos(); //Creamos los componentes y los añadimos al contenedor principal caja.pack(); caja.setVisible(true); } //Implementamos los métodos de la interfaz KewyListener. Sólo nos interesa //el que trata el evento de pulsar una tecla, por lo tanto dejamos vacíos los demás { etiqueta.setText(labelPrefix + e.getKeyChar()); } }
Preguntas:
- ¿Qué puedo hacer para arreglarlo?
- ¿Por qué es necesario instanciar la clase principal?
- ¿Hay otra forma más clara de hacer esto?
Código:
Saludos EjemploEventos app = new EjemploEventos(); //Creamos los componentes y los añadimos al contenedor principal Component componentes = app.crearComponentes(); caja.getContentPane().add(componentes, BorderLayout.CENTER);