miércoles, 19 de septiembre de 2012

agregar un arreglo de labels

Lastimosamente para netbeans no hay un metodo que solo indicar el tamaño del arreglo y ya esta, hay que hacerlo a mano, en este caso cree una clase jframe y a este le añadi un jpanel   y en este es el que le aplico el codigo.


package agregarlabels;

import java.awt.Color;
import javax.swing.BorderFactory;
import javax.swing.JLabel;
import javax.swing.border.Border;

/**
 *
 * @author jaac747
 */
public class pantalla extends javax.swing.JFrame {

    /**
     * Creates new form pantalla
     */
    public pantalla() {
        initComponents();
        inicio();
        this.setSize(400, 425);
    }
     
    private void inicio(){
        JLabel[] tablero;
        jPanel1.setSize(340, 340);
        int datox=15;//el total de piesas horizontalmente
        int datoy=datox;//para que sea una matriz cuadrada se iguala 
        int aux=datox*datoy;//el total de labels en la matriz
        tablero=new JLabel[aux];//se crea el arreglo de labels segun el tamaño total
        int espacio=5;//se crea un espacio que sera el que estara entre los datos
        //se obtiene el tamaño en x de los labels segun la cantidad de estos
        int tamanox=(jPanel1.getWidth()-(espacio*(datox+1)))/datox;
        System.out.println(tamanox);
        //se obtiene el tamaño en y de los labels segun la cantidad de estos
        int tamanoy=(jPanel1.getHeight()-(espacio*(datoy+1)))/datoy;
        System.out.println(tamanoy);
        
        int total=0;// se crea una bariable para recorrer el arreglo de labels
        int posiciony=0;//variable que sirve para ver la posicion en y de
for(int y=0;y<datoy;y++){
            //se le da una pocicion en y 
            posiciony=(y*(tamanoy+espacio)+espacio);
            for(int x=0;x<datox;x++){
                //System.out.println(total);
                tablero[total]=new JLabel("1");// se crea el objeto jlabel
                tablero[total].setBackground(Color.red);
                //se le da un borde
                tablero[total].setBorder(BorderFactory.createLineBorder(Color.black));
                //se le da una pocicion en x 
                int posicionx=((x+1)*espacio+(x*tamanox));
                System.out.println(posicionx);
                //se le da una posicion en x & y & se le da un tamaño en x & y 
                tablero[total].setBounds(posicionx,posiciony, tamanox, tamanoy);
                // se añade el label a un panel
                jPanel1.add(tablero[total]);
                //se le da que el label es visible
                tablero[total].setVisible(true);
                total++;
                //System.out.println((espacio+x*tamanox));
            }
        }
    }

sábado, 1 de septiembre de 2012

cambio de varios jpanel's en unico jframe

Una obcion util al momento de realizar programas es el cambio de paneles en una misma ventana con el click de un boton  o la seleccion de un menu, puesto que nos separa las diferentes secciones de codigo segun lo necesitemos

primero se añade un jpanel dentro de la ventana  y se le da el tamaño deceado, el panel es la parte seleccionada en el cuadro rojo

 luego se le da click derecho y se va a set Layout(1) que es un tipo de ordenamiento y se selecciona el ordenamiento card layout(2)

se crea los paneles como clases de jpanel que seran los que utilizaremos con cada obcion en este caso tenemos ingresos(1) y modificar(2)

en el jframe se añade este codigo que es el que ara el cambio de paneles, asi tendria que quedar la clase pantalla

package cambioventana;

import java.awt.CardLayout;

/**
 *
 * @author jaac747
 */
public class pantalla extends javax.swing.JFrame {

    /**
     * Creates new form pantalla
     */
    
    private CardLayout paletas;//esta es una obcion que nos permite hacer el cambio de panels en la misma ventana
    private ingreso ingresos=new ingreso();// jpanel que contiene ingresos
    private modificar modifica= new modificar();//jpanel que contiene modificar
    boolean cambios=true;
    public pantalla() {
        initComponents();
        
        //se añade este codigo

        jPanel1.setLocation(WIDTH, WIDTH);// le digo que tenga una localizacion dentreo de la ventana
        jPanel1.add(ingresos,"menu1"); //le indico que ingresos tendra de sobrenombre menu1 y que pertenece a jpanel de ventana
        jPanel1.add(modifica,"menu2");//le indico que modifica tendra el sobrenombre de menu2 y que pertenece a jpanel de ventana

        paletas = (CardLayout)jPanel1.getLayout(); //le agrego la obcion a paletas para que aga el cambio
        paletas.show(jPanel1, "menu1");// le indico que jpanel tendra el cambio y cual panel mostrara
    }
    
    /**
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
   
    /**
     * esto es para que al precionar el boton aga el cambio
     */
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
            if(cambios==true){// comprueva que panel esta como son dos se usa true o false
                paletas.show(jPanel1, "menu2");// hace cambio entre el panel uno  al 2
                cambios= false;
            }else{
                paletas.show(jPanel1, "menu1");// hace cambio entre el panel 2 al 1 
                cambios= true;
            }
    }

    /**
     * @param args the command line arguments
     */

    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JPanel jPanel1;
    // End of variables declaration
}