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:
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./* * 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); } }
Gracias de antemano y pronto espero una respuesta.
Saludos Kao.