2
« en: 28 de Julio 2017, 02:12 »
¡Hola!
Estoy haciendo un programa de ejemplo para mostrar un frame en JAVA con la clase swing. Me ha salido un error de principiante, el "non-static variable this cannot be referenced from a static context".
Tengo un paquete llamado "graficos" en el que he metido un único fichero .java llamado "CreandoMarcos", dentro del cual tengo el método main, la clase "CreandoMarcos" y dos clases más: "miMarco" y "miMarcoBis". Estas dos últimas clases hacen lo mismo, pintar un frame en la pantalla; he creado dos sólo para hacer pruebas de sintaxis.
Mientras la clase "miMarco" la he declarado fuera de la clase "CreandoMarcos", la otra clase "miMarcoBis" la he declarado dentro de "CreandoMarcos" como clase interna suya. Y ahí he encontrado el primer problema, cuando instancio la clase "miMarcoBis" dentro del main recibo el error "non-static variable this cannot be referenced from a static context". Pongo el código que estoy escribiendo:
package graficos;
import javax.swing.*;
public class CreandoMarcos {
public static void main(String[] args) {
miMarco marco1 = new miMarco();
marco1.setVisible(true);
marco1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
miMarcoBis marco2 = new miMarcoBis(); // Aquí es donde me da el error...
}
class miMarcoBis extends JFrame {
public miMarcoBis() {
setSize(500, 300);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
}
class miMarco extends JFrame {
public miMarco() {
setSize(500, 300);
}
}
¿Por qué no me deja en el main crear una instancia de miMarcoBis si declaro esa clase dentro de CreandoMarcos en lugar de fuera?
Gracias y un saludo,
Lerner