Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/06/2010, 02:37
sahch
 
Fecha de Ingreso: junio-2010
Mensajes: 16
Antigüedad: 13 años, 10 meses
Puntos: 6
Mensaje Redefinir JFrame, repaint Jframe

Hola

mi problema es el siguiente, estoy programando el Juego de la vida, el juego parte con una matriz de 12 x 12, pero quiero dar la opcion al usuario de poder cambiar el tamaño de la matriz, por ejemplo que quede de 20 x 10, y quiero que la matriz con las nuevas dimensiones este en el mismo Frame... por lo que entiedo esto debo realizarlo con el metodo repaint() o update(), pero no se bien como ocuparlos o si debo redifinirlos, de ante mano muchas gracias.... :)

este es el codigo del Frame:
Código PHP:
package principal;

import java.awt.event.ActionEvent;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.event.ChangeListener;
import objetos.*;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.*;

/**
 *
 * @author sahch
 */
public class principalVista2 extends JFrame {

    private 
JuegoDeLaVida juego;
    private 
Canvas canvas[][];
    private 
JButton jbtn_siguiente;
    private 
JButton jbtn_limpiar;
    private 
JButton jbyn_random;
    private 
JButton jbtn_okTamaño;
    private 
JPanel jpnl_panelBotones;
    private 
JPanel jpnl_panelCanvas;
    private 
JSpinner jspn_numfilas;
    private 
JSpinner jspn_numcolumnas;
    private 
JLabel jlbl_fila;
    private 
JLabel jlbl_comluman;
    private 
int filas;
    private 
int columnas;

    public 
principalVista2() {

        
super("El Juego de la Vida");

        
this.filas 12;
        
this.columnas 12;

        
initComponets();
    }

    private 
void initComponets() {

        
this.jspn_numfilas = new JSpinner(new SpinnerNumberModel(this.filas11001));
        
this.jspn_numfilas.setSize(5020);

        
this.jlbl_fila = new JLabel("Filas");
        
this.jlbl_fila.setSize(7020);

        
this.jspn_numcolumnas = new JSpinner(new SpinnerNumberModel(this.columnas11001));
        
this.jspn_numcolumnas.setSize(5020);

        
this.jlbl_comluman = new JLabel("Columnas");
        
this.jlbl_comluman.setSize(7020);

        
this.jpnl_panelBotones = new JPanel();
        
this.jpnl_panelCanvas = new JPanel();

        
this.juego = new JuegoDeLaVida(this.filasthis.columnas);

        
this.canvas = new Canvas[this.juego.getMallaDeJuego().getMallaCelulas().length][this.juego.getMallaDeJuego().getMallaCelulas()[0].length];


        
this.setLayout(null);
        
setDefaultCloseOperation(EXIT_ON_CLOSE);
        
this.setResizable(true);

        
jbtn_okTamaño = new JButton(new ImageIcon(getClass().getResource("/principal/icono_ok.png")));
        
jbtn_okTamaño.addActionListener(new ActionListener() {

            public 
void actionPerformed(ActionEvent ae) {
                
jbtn_okTamañoActionPerformed(ae);
            }
        });

        
jbyn_random = new JButton(new ImageIcon(getClass().getResource("/principal/icono_random.jpeg")));
        
jbyn_random.addActionListener(new ActionListener() {

            public 
void actionPerformed(ActionEvent ae) {
                
jbtn_randomActionPerformed(ae);
            }
        });

        
this.jbtn_siguiente = new JButton();
        
this.jbtn_siguiente.setIcon(new ImageIcon(getClass().getResource("/principal/icono_siguiente.png")));

        
jbtn_siguiente.addActionListener(new ActionListener() {

            public 
void actionPerformed(ActionEvent evt) {
                
jbtn_siguienteActionPerformed(evt);
            }
        });

        
this.jbtn_limpiar = new JButton();
        
this.jbtn_limpiar.setIcon(new ImageIcon(getClass().getResource("/principal/icono_escoba.png")));

        
jbtn_limpiar.addActionListener(new ActionListener() {

            public 
void actionPerformed(ActionEvent evt) {
                
jbtn_limpiarActionPerformed(evt);
            }
        });

        
this.jpnl_panelCanvas.setLayout(null);

        
int aux1 20aux2 20aux3 0;
        for (
int x 0this.canvas.lengthx++) {

            for (
int y 0this.canvas[0].lengthy++) {

                
this.canvas[x][y] = new Canvas();
                
this.canvas[x][y].setSize(2020);
                
this.canvas[x][y].setLocation(aux1aux2);

                
//celula viva, color azul, celula muerta color gris
                
this.canvas[x][y].setBackground(Color.gray);

                
canvas[x][y].addMouseListener(new java.awt.event.MouseAdapter() {

                    public 
void mouseClicked(java.awt.event.MouseEvent evt) {
                        
canvasMouseClicked(evt);
                    }
                });

                
this.jpnl_panelCanvas.add(this.canvas[x][y]);
                
aux1 += 21;
            }

            
aux3 aux1;
            
aux1 20;
            
aux2 += 21;
        }


        
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jpnl_panelBotones);
        
jpnl_panelBotones.setLayout(jPanel1Layout);
        
jPanel1Layout.setHorizontalGroup(
                
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap(0100Short.MAX_VALUE));


        
this.jpnl_panelBotones.add(this.jbtn_siguiente);
        
this.jpnl_panelBotones.add(this.jbtn_limpiar);
        
this.jpnl_panelBotones.add(this.jbyn_random);
        
this.jpnl_panelBotones.add(this.jlbl_fila);
        
this.jpnl_panelBotones.add(this.jlbl_comluman);
        
this.jpnl_panelBotones.add(this.jspn_numfilas);
        
this.jpnl_panelBotones.add(this.jspn_numcolumnas);
        
this.jpnl_panelBotones.add(this.jbtn_okTamaño);

        
this.jbtn_okTamaño.setLocation(33010);
        
this.jbtn_okTamaño.setSize(5050);

        
this.jbtn_siguiente.setLocation(1010);
        
this.jbtn_siguiente.setSize(5050);

        
this.jbtn_limpiar.setLocation(7010);
        
this.jbtn_limpiar.setSize(5050);

        
this.jbyn_random.setLocation(13010);
        
this.jbyn_random.setSize(5050);

        
this.jlbl_fila.setLocation(19010);

        
this.jlbl_comluman.setLocation(19040);

        
this.jspn_numfilas.setLocation(27010);

        
this.jspn_numcolumnas.setLocation(27040);

        
this.jpnl_panelBotones.setSize(39070);

        
this.jpnl_panelBotones.setBorder(BorderFactory.createEtchedBorder());

        
//this.jpnl_panelCanvas.setBorder(BorderFactory.createEtchedBorder());

        
this.jpnl_panelCanvas.setSize(aux3 20aux2 19);

        if (
this.jpnl_panelCanvas.getWidth() < this.jpnl_panelBotones.getWidth()) {

            
this.setSize(430aux2 125);
            
this.jpnl_panelCanvas.setLocation(this.getWidth() / this.jpnl_panelCanvas.getWidth() / 100);
            
this.jpnl_panelBotones.setLocation((this.getWidth() / 2) - (this.jpnl_panelBotones.getWidth() / 2), aux2 20);

        } else {

            
this.setSize(aux3 25aux2 125);
            
this.jpnl_panelCanvas.setLocation(00);
            
this.jpnl_panelBotones.setLocation((this.getWidth() / 2) - (this.jpnl_panelBotones.getWidth() / 2), aux2 20);
        }

        
this.add(this.jpnl_panelCanvas);

        
this.add(this.jpnl_panelBotones);

    }

    private 
void jbtn_siguienteActionPerformed(java.awt.event.ActionEvent evt) {
        
        
this.juego.actualizar();

        
this.actualizarCanvas();
    }

    private 
void jbtn_limpiarActionPerformed(ActionEvent evt) {

        
this.juego.iniciar(false);
        
this.actualizarCanvas();
    }

    private 
void actualizarCanvas() {

        for (
int x 0this.canvas.lengthx++) {

            for (
int y 0this.canvas[0].lengthy++) {

                if (
this.juego.getMallaDeJuego().getMallaCelulas()[x][y].isEstado() == true) {

                    
this.canvas[x][y].setBackground(Color.blue);
                } else {
                    
this.canvas[x][y].setBackground(Color.gray);
                }
            }
        }
    }

    private 
void canvasMouseClicked(java.awt.event.MouseEvent evt) {

        for (
int x 0this.canvas.lengthx++) {

            for (
int y 0this.canvas[0].lengthy++) {

                if (
evt.getSource() == this.canvas[x][y]) {

                    if (
this.juego.getMallaDeJuego().getMallaCelulas()[x][y].isEstado() == true) {
                        
this.juego.getMallaDeJuego().getMallaCelulas()[x][y].setEstado(false);
                        
this.canvas[x][y].setBackground(Color.gray);
                    } else {
                        
this.juego.getMallaDeJuego().getMallaCelulas()[x][y].setEstado(true);
                        
this.canvas[x][y].setBackground(Color.blue);
                    }
                }
            }
        }
    }

    public 
void jbtn_randomActionPerformed(ActionEvent ae) {

        
this.juego.iniciarRandom();
        
this.actualizarCanvas();
    }

    private 
void jbtn_okTamañoActionPerformed(ActionEvent ae) {

        
this.filas Integer.parseInt(this.jspn_numfilas.getValue().toString());
        
this.columnas Integer.parseInt(this.jspn_numcolumnas.getValue().toString());

        
System.out.println("repaint");
    }

    public static 
void main(String args[]) {

        
java.awt.EventQueue.invokeLater(new Runnable() {

            public 
void run() {
                new 
principalVista2().setVisible(true);
            }
        });
    }
     


Última edición por sahch; 02/06/2010 a las 22:03