Estoy empezando a programar en Java y tengo un error que seguramente, sea muy fácil de resolver, pero yo llevo ya dos días con ello.
Pongo el código y explico:
Código:
import java.awt.Color; import java.awt.Graphics; import java.awt.Polygon; import javax.swing.JFrame; /** * Clase que hereda de Canvas y sirve para dibujar una linea. */ public class Lienzo extends JFrame{ public Lienzo() { //super( "Dibujo de polígonos" ); //this.add(new Label("Archivo")); setVisible( true ); this.setSize( 600, 650 ); } /** * Dibuja la última línea que se le haya pasado. */ public void paint(Graphics g) { super.paint( g ); // llamar al método paint de la superclase int valoresX[] = { 50, 100, 450, 350, 200, 100,100 }; int valoresY[] = { 100, 450, 350, 50, 100, 50, 50 }; Polygon poligono1 = new Polygon( valoresX, valoresY, 7 ); g.setColor( Color.RED ); g.drawPolygon( poligono1 ); int valoresX2[] = { 100, 150, 400, 250, 100 }; int valoresY2[] = { 150, 400, 300, 100, 150 }; g.setColor( Color.BLUE ); g.drawPolyline( valoresX2, valoresY2, 5 ); int i; for(i=50;i<500;i++){ g.drawLine(i, 50, i, 500); i = i + 10; } int j; for(j=50;j<500;j++){ g.setColor( Color.BLACK ); g.drawLine(50, j, 500, j); j = j + 10; } } }
Esta clase hace el dibujo de dos polígonos.
Código:
Y esta llama a la anterior para sacarlo por pantalla.import javax.swing.JPanel; //import javax.swing.JFrame; /** * Panel con un Lienzo y un botón. * Pulsando el botón se cambia la línea a dibujar en el lienzo. */ public class PanelPrincipal extends JPanel { /** * Constructor por defecto. Pone el lienzo y el botón en el panel y * hace que se dibuje la primera línea. */ public PanelPrincipal() { ponComponentes(); } /** * Pone el lienzo y el botón en el panel. */ private void ponComponentes() { this.add (lienzo); } /** El lienzo de dibujo */ private Lienzo lienzo = new Lienzo(); public static void main(String g[]){ PanelPrincipal prog = new PanelPrincipal(); //Instanciamos la clase que creamos //prog.show();//Mostramos esa ventana //JFrame.setDefaultLookAndFeelDecorated(true); //Lienzo aplicacion = new Lienzo(); //aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); }//FIN DEL PROCEDIMIENTO PRINCIPAL }
Lo hace, pero la aplicación se queda corriendo diciendo que:
Exception in thread "main" java.lang.IllegalArgumentException: adding a window to a container
Obviamente, el fallo es que no puedo añadir un JFrame a un Jpanel.
Estoy mirando e intentado corregir, pero no logro dar con la solución.No sé si alguien me puede orientarme o darme alguna referencia para poder solucionarlo.
Gracias de antemano y perdonad si el error es muy simple...