Foros del Web » Programación para mayores de 30 ;) » Java »

Error adding a window to a container

Estas en el tema de Error adding a window to a container en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 26/04/2012, 05:35
 
Fecha de Ingreso: agosto-2011
Mensajes: 59
Antigüedad: 12 años, 8 meses
Puntos: 0
Error adding a window to a container

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...
  #2 (permalink)  
Antiguo 26/04/2012, 07:44
Avatar de caruizj  
Fecha de Ingreso: marzo-2012
Ubicación: Málaga
Mensajes: 161
Antigüedad: 12 años, 1 mes
Puntos: 14
Respuesta: Error adding a window to a container

Es que primero tienes que llamar a la ventana y luego añadir el panel a la ventana. Lo que estas haciendo es llamar a la ventana y luego añadir el panel a una clase que hereda de panel...

En vez de poner this.add cuando añades el liezo, añadeselo a la ventana, ¿no? que sea así ventana.add(panel);
__________________
Aprendiendo un poco de Java :D
  #3 (permalink)  
Antiguo 27/04/2012, 01:22
 
Fecha de Ingreso: agosto-2011
Mensajes: 59
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Error adding a window to a container

Gracias!!! Ya lo solucioné como me dijiste y me salió añadiendo la ventana al panel.

Gracias caruizj.

Un saludo

Etiquetas: clase, container, jar, programa, string, window, aplicaciones
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:03.