Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/08/2009, 12:41
nigaz
 
Fecha de Ingreso: agosto-2009
Mensajes: 2
Antigüedad: 15 años, 4 meses
Puntos: 0
Ayuda: Nuevo en java Swing(JPanel&JFrame)

Hola,

Os contaré un poco de que va mi aplicación. Después de ello que dudas tengo y colgaré codigo referente.

Mi aplicación: Tengo 3 clases. Una que se encarga de leer desde fichero que llamaré clase IOSystem. Otra se encarga, mediante el fichero leido, de pintar figuras con colores que llamaré clase Panel. Y la ultima clase se encarga de crear la ventana principal, añadir barras de menus, recoger los listeners... que llamaré Principal.

Panel extiende la clase de java swing JPanel y Principal JFrame.

En Panel tengo el método sobreescrito paintComponent(Graphics g); que se supone que pinta lo que leyo del fichero y por ahora nada más.

En Principal esta el metodo main de mi aplicacion. Alli instancio una variable de mi clase Principal y configuro un par de paramertos.

Mi problema: El problema me surge cuando quiero redimensionar la ventana principal (clase Principal). Pasa que el contenido de dentro(clase Panel) se queda "fijo" por asi decir. Muevo la ventana principal pero nada cambia. Quiero que cuando redimensiono la ventana principal el contenido de dentro se ajuste al tamaño de dicha ventana principal.
Aqui muestro un codigo simplificado para que veais como lo hago.

Código:
/*
 * Panel.java
 *
 * Created on 23th May 2009, 18:16
 * Last modification: 23th May 2009, 18:16
 *
 */
import javax.swing.*;
import java.awt.*;

public class Panel extends JPanel//Problemas con canvas y menus desplegables.
{  
   public Panel() {}
   
   public void paintComponent(Graphics g)
   {
      super.paintComponent(g);
      g.setColor(Color.RED);
      g.fillRect(10,10,10,10);
   }
}

/*
 * Principal.java
 *
 * Created on 22th May 2009, 15:14
 * Last modification: 22th May 2009, 15:14
 *
 */
 
import java.io.File;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
 
public class Principal extends JFrame implements ActionListener
{
  
   private static Panel tablero;
   private IOSystem io;
   //...Codigo
   
   public Klotski()
   {
      //leerArchivo();
      io = new IOSystem();
      io.leerFichero();
      dimensionesLeidas = io.leerDimensiones();
      listaMapa = io.leerMapa();
      nombreJuego = io.leerNombre();
      io.cerrarFichero();
      
      //Centramos ventana
      Toolkit kit = Toolkit.getDefaultToolkit();
      Dimension screenSize = kit.getScreenSize();
      int screenHeight = screenSize.height;
      int screenWidth = screenSize.width;
      setLocation(screenWidth / 4, screenHeight / 4);
      
      setLayout(new BorderLayout());    
      tablero = new Panel();
      add(tablero, BorderLayout.CENTER);
      setTitle(new String(nombreJuego));
      
      //Creamos barra de menus
      JMenuBar menuBar = new JMenuBar();
      //...Codigo
      setJMenuBar(menuBar);   
      
      addWindowListener(new WindowAdapter()
      {
         public void windowClosing(WindowEvent evento) 
         {
            //...Codigo
         }
      });       
   }   

   public void actionPerformed(ActionEvent evento)
   {
     //....Codigo
   }

   public static void main(String[] args) 
   {
      Principal ventanaPrinc = new Principal();
      ventanaPrinc.setDefaultCloseOperation(EXIT_ON_CLOSE);
      ventanaPrinc.pack();
      ventanaPrinc.setVisible(true);
   }
}
Espero que se haya entendido todo. En cualquier otro caso por favor no dudeis en preguntar para que os pueda esclarecer cualquier tipo de duda.
Gracias de antemano y pronto espero una respuesta.

Saludos Kao.