Hola amigos del Foro.
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:
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
}
Y esta llama a la anterior para sacarlo por pantalla.
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...