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

Redefinir JFrame, repaint Jframe

Estas en el tema de Redefinir JFrame, repaint Jframe en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 02/06/2010, 02:37
 
Fecha de Ingreso: junio-2010
Mensajes: 16
Antigüedad: 14 años, 5 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
  #2 (permalink)  
Antiguo 02/06/2010, 13:06
 
Fecha de Ingreso: mayo-2010
Ubicación: Chilpancingo, Gro
Mensajes: 25
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Redefinir JFrame, repaint Jframe

mm intenta con show() o con pack().

Saludos!

Etiquetas: frame, jframe, paint, repaint, vida, juegos
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 08:55.