jpanel en java

Usar JPanel En Java

Encuentra en el sitio

Últimos Artículos

Los JPanel en Java son objetos contenedores, la finalidad de estos objetos es la agrupación de otros objetos tales como botones, campos de texto, etiquetas, selectores, etc; una gran ventaja de Usar JPanel en Java es que podemos manejar la agrupación de una mejor forma, supongamos que tenemos una serie de botones en un panel, y deseamos desactivarlos todos a las vez, en lugar de hacerlo individualmente con los botones, podemos desactivar el panel y con esto los botones.

CREANDO JPANEL EN JAVA

Con el siguiente ejemplo voy a mostrar tres paneles, cada uno con un layout diferente, ademas de esto tres botones los cuales mostraran como quitar o poner la visibilidad en cada panel obteniendo el beneficio de la agrupación que comentaba en la introducción:

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class GuiJava implements ActionListener{//implementando el listener de eventos
   
    JPanel jp1, jp2, jp3;
    JButton jb1, jb2, jb3, jbP1, jbP2, jbP3;   
    
    public GuiJava(){
        
        JFrame jfM = new JFrame("JPanel En Java");  
        jfM.setLayout(null);
        
        
        gridJP(); bordJP(); flowJP(); //invocamos los metodos que contienen los paneles 
        
        jbP1 = new JButton("Panel 1"); jbP2 = new JButton("Panel 2"); jbP3 = new JButton("Panel 3");
        
        jp1.setBounds(10, 10, 200, 200); jp2.setBounds(240, 10, 400, 250); jp3.setBounds(10, 270, 400, 150);
        
        jbP1.setBounds(10, 430, 90, 20); jbP2.setBounds(110, 430, 90, 20); jbP3.setBounds(210, 430, 90, 20);
        
        jfM.add(jp1); jfM.add(jp2); jfM.add(jp3); 
        jfM.add(jbP1); jfM.add(jbP2); jfM.add(jbP3);
        
        jbP1.addActionListener(this); jbP2.addActionListener(this); jbP3.addActionListener(this);
        
        jfM.setLocation(100, 50);
        jfM.setResizable(false);
        jfM.setVisible(true);
        jfM.setSize(800, 600);
        jfM.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    
    public void gridJP(){
        
        jp1 = new JPanel(new GridLayout(3, 1, 5, 7));//filas, columnas, espacio entre filas, espacio entre columnas
               
        jb1= new JButton("B1"); jb2= new JButton("B2"); jb3= new JButton("B3");//creamos los objetos para el panel
        
        jp1.add(jb1); jp1.add(jb2); jp1.add(jb3);//añadimos los objetos al jpanel
        
        jb1.addActionListener(this); jb2.addActionListener(this); jb3.addActionListener(this);
        
        jp1.setVisible(true);
    }
    
    public void bordJP(){
        jp2 = new JPanel(new BorderLayout(2, 3));//espacio entre las regiones, horizontal y vertical
        
        jb1= new JButton("B1"); jb2= new JButton("B2"); jb3= new JButton("B3");//añadiendo objetos al jpanel
        
        jp2.add(jb1, BorderLayout.NORTH);//boton al panel norte
        jp2.add(jb2, BorderLayout.WEST); //boton a la region oeste
        jp2.add(jb3, BorderLayout.CENTER); //boton a la region centro    
        
        jb1.addActionListener(this); jb2.addActionListener(this); jb3.addActionListener(this);
        
        jp2.setVisible(true);
    }
    
    public void flowJP(){
        jp3 = new JPanel(new FlowLayout());
        
        jb1= new JButton("B1"); jb2= new JButton("B2"); jb3= new JButton("B3");//añadiendo objetos al jpanel
        
        jp3.add(jb1); jp3.add(jb2); jp3.add(jb3);//añadimos los objetos al jpanel
        
        jb1.addActionListener(this); jb2.addActionListener(this); jb3.addActionListener(this);
        
        jp3.setVisible(true);
    }
    
    public static void main(String[] args) {        
        GuiJava gj = new GuiJava();//uso de constructor para la ventana
    }

    @Override
    public void actionPerformed(ActionEvent e) {//sobreescribimos el metodo del listener
        
        if(e.getSource() == jbP1){
            if(jp1.isVisible()){
                jp1.setVisible(false);
            }else
                jp1.setVisible(true);
        }else if(e.getSource() == jbP2){
            if(jp2.isVisible()){
                jp2.setVisible(false);
            }else
                jp2.setVisible(true);
            
        }else if(e.getSource() == jbP3){
            if(jp3.isVisible()){
                jp3.setVisible(false);
            }else
                jp3.setVisible(true);
            
        }else{
            JOptionPane.showMessageDialog(null, e.getActionCommand());
        }
    }
}

Si se ejecuta el codigo se vera la siguiente ventana:

jpanel en java

Y si queremos algo mas, como adornar el panel, hacer visible la frontera de este, configurar el borde con color al jpanel, o asignarle margen interno al jpanel; esto lo haremos con la siguiente linea:

//la siguiente linea es para dar margen interior y color al jpanel
        jp1.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createLineBorder(Color.black),BorderFactory.createEmptyBorder(10, 15, 5, 15)));

El jp1, corresponde al objeto del primer panel, si se desea este borde a determinado panel, hay que configurarlo por separado, en el siguiente ejemplo se configuro para el primer y segundo panel:

jpanel con borde en java

Como se ve en la anterior imagen, un cambio mínimo hace una buena diferencia para la vista del usuario, y esto es importante 😉

Si te ha gustado el post, compártelo, regala un like ó comenta 😉

Resumen
Fecha Publicación
Resumen articulo
Crear paneles al Usar JPanel en Java, ademas agregar bordes y colores a los paneles. Ademas de usar Layouts en los paneles para la organización de los objetos en el contenedor.
Calificación
51star1star1star1star1star
  1. Avatar for belial9826 Alfonso Dominguez dice:

    Muchas gracias chaval, me sirvió mucho para aprender acerca del funcionamiento espiritual del mundo dentro del mundo de David Cage.

  2. Avatar for belial9826 angela dice:

    oye me ayudas a hacer una practica en netbeans de jpanel pags.21 y 22

  3. Avatar for belial9826 angela dice:

    oye me ayudas a hacer una practica de jpanel paginas21 y 22

  4. Avatar for belial9826 jairo dice:

    Claro muy claro. Muchas gracias.

  5. Avatar for belial9826 Gregory dice:

    Como hago para cambiar las acciones de cada botón y me permitan realizar otras operaciones usando como menú…

  6. Avatar for belial9826 Jorge Augusto dice:

    Muchas gracias por la info

  7. Avatar for belial9826 MxAntonyRed dice:

    Hola, una pregunta, es que necesito ocultar tres Paneles que ya tengo creados, y que cuando yo con un JComboBox escoja uno de los 3 items, se visualice uno de los tres JPanel que tengo creados, la pregunta es ¿Cual codigo me recomendarías usar para realizar esta acción, que elabore un array y el numero determinado de JPanel en el array se utilice en un If y dentro de la condición escribir un setVisible(true) o simplemente con un getSelectedIndex(); y crear un if para este? Podrias ayudarme, jejej es que en realidad estoy estudiando eso en bachillerato y apenas empecé, estoy realizando un sistema de entradas para una base de datos, yo utilizo el NetBeans IDE 7.3.1, muy buen post, le entendí bastante.

  8. Avatar for belial9826 Adrian Rodriguez dice:

    Hola, buenas. Tenia una duda. Estoy haciendo una aplicación donde dentro de un jpanel hay un jbutton, y me gustaría que al hacer click en ese jbutton, se abriera otro jpanel. No se como hacer que funcione. He probado a abrir ventanas desde un jframe, y ahí, sí que me sale. Pero no se porque desde un jpanel no me sale. Es posible? Si fuera así, como? Gracias

    1. Avatar for belial9826 belial9826 dice:

      Hola adrian, en este articulo muestro como mostrar y ocultar un jPanel en Java, o quieres hacerlo en una ventana independiente?

      1. Avatar for belial9826 Adrián rodríguez dice:

        Quiero hacerlo en una ventana independiente. Básicamente, lo que quiero es que un jbutton pueda abrir una ventana(jpanel, jdialog…) desde un jpanel.

  9. Avatar for belial9826 Brigitte dice:

    hola, buenas noches, mira tengo una pregunta, estoy haciendo un juego de poker, estamos usando en mismo IDE, y pues necesito crear un jpanel, o lo que sea que me muestre un jtext y como cinco jlabel, el problema es que hasta el momento ya tengo un jframe en donde muestro las cartas y donde sucede el juego por decirlo de alguna manera, pero no lo he hecho por código sino por la opción design, entonces no se como hacer para crear este jframe o jlabel, que me aparezco luego de que aparezca el que ya tengo,si me pudieras colaborar, realmente me ayudarías te lo agradecería en el alma

    1. Avatar for belial9826 belial9826 dice:

      Disculpa por responderte algo tarde, lo que pretendes hacer es ocultar y mostrar un jpanel, o algo asi. En el anterior link encontraras como hacerlo. Por la parte de diseño es algo mas enredado, en cuanto a los eventos, si das click derecho de cualquier componente este te mostrara para añadir codigo en determinado evento. El problema viene cuando quieres explicar el codigo y te encontraras con codigo que tu no has ingresado. Exitos!

  10. Avatar for belial9826 J.Santos dice:

    ¿Como sería cambiar un panel por otro? Es decir, destruir uno y poner otro en su lugar.???

    Gracias.

    1. Avatar for belial9826 belial9826 dice:

      Hola @J.Santos, para destruir un objeto basta con la siguiente linea: objeto = null; con lo anterior ya queda destruido, pero ten cuidado! Ya que no jugaras con la visibilidad del Jpanel para mostrarlo u ocultarlo, sino con la existencia de los objetos, en otras palabras usando una condición como la siguiente: objeto ==null ó objeto!=null, este ultimo es si el objeto existe.

  11. Avatar for belial9826 Blacky dice:

    Hola 🙂 Quisiera saber como puedo meter un panel dentro de otro panel :3 Gracias!

    1. Avatar for belial9826 belial9826 dice:

      Hola Blacky, supongamos que tenemos un panel de tipo BorderLayout, supongamos que en el lado izquierdo y derecho irán dos paneles con sus respectivos layout, para esto usaremos el metodo .add quedando de la siguiente forma:

      panel.add(panelIzq, BorderLayout.WEST); //panel a la izquierda
      panel.add(panelDer, BorderLayout.EAST); //panel a la derecha
      

      Espero te sea de ayuda.

  12. Avatar for belial9826 Greivin dice:

    Una pregunta el post esta muy bueno pero como se hace para que los botones tomen la misma forma y que no se rijan por la cantidad de caracteres..

    1. Avatar for belial9826 belial9826 dice:

      Hola, me alegra que te haya gustado el post 🙂 Para lo que quieres tendrás que usar el método setBounds para los buttons o Jbuttons, en conjunto de esto tendrás que configurar la disposición del JPanel con un setLayout(null). Un ejemplo claro para lo que quieres lo podrás encontrar en el ejemplo de calculadora básica en java, espero te sirva 🙂

  13. Avatar for belial9826 nahuel dice:

    holaaaa queria saber , ya que eres tan bueno en java , si podrias hacer un programita que tenga un menu donde te pida si calcular cateto opuesto o cateto adyacente y que vos ingreses una fuerza y unn angulo y que de ahi te tire las componentes de esa fuerza , por favor contactate a mi mail porque de verdad lo nesesito con urgencia , muchas gracias
    mail: [email protected]

  14. Avatar for belial9826 luis dice:

    gracias por enviarmelo aunq ya copie tu codigo no puedo ejecutarlo hay q crearlo como una clase especial o lo creas como Jpanel form

    1. Avatar for belial9826 belial9826 dice:

      Hola luis, mira, depende del IDE que uses, en mi caso uso Netbeans, pero en general, creas la clase con el nombre de la clase del código de ejemplo, recuerda, el nombre de la clase debe coincidir con el nombre del archivo.java, en mi caso la clase la nombre GuiJava, así que el archivo se debe de llamar GuiJava.java, si estas en Netbeans tiene que copiar después de la primer linea, ya que esta denomina el Package donde se encuentran los archivos principales. 😉

  15. Avatar for belial9826 Luis dice:

    Hola me puedes enviar el código completo xfa xq hay partes q no stan completas

    1. Avatar for belial9826 belial9826 dice:

      Hola 🙂 el siguiente código es del ultimo ejemplo, es algo mas completo, espero te sirva 😉

      import java.awt.BorderLayout;
      import java.awt.Color;
      import java.awt.FlowLayout;
      import java.awt.GridLayout;
      import java.awt.event.ActionEvent;
      import java.awt.event.ActionListener;
      import javax.swing.BorderFactory;
      import javax.swing.JButton;
      import javax.swing.JFrame;
      import javax.swing.JOptionPane;
      import javax.swing.JPanel;
      
      public class GuiJava implements ActionListener{//implementando el listener de eventos
         
          JPanel jp1, jp2, jp3;
          JButton jb1, jb2, jb3, jbP1, jbP2, jbP3;
          
          public GuiJava(){
              
              JFrame jfM = new JFrame("JPanel En Java");  
              jfM.setLayout(null);
              
              
              gridJP(); bordJP(); flowJP(); //invocamos los metodos que contienen los paneles 
              
              jbP1 = new JButton("Panel 1"); jbP2 = new JButton("Panel 2"); jbP3 = new JButton("Panel 3");
              
              jp1.setBounds(10, 10, 200, 200); jp2.setBounds(240, 10, 400, 250); jp3.setBounds(10, 270, 400, 150);
              
              jbP1.setBounds(10, 430, 90, 20); jbP2.setBounds(110, 430, 90, 20); jbP3.setBounds(210, 430, 90, 20);
              
              jfM.add(jp1); jfM.add(jp2); jfM.add(jp3); 
              jfM.add(jbP1); jfM.add(jbP2); jfM.add(jbP3);
              
              jbP1.addActionListener(this); jbP2.addActionListener(this); jbP3.addActionListener(this);
              
              jfM.setLocation(100, 50);
              jfM.setResizable(false);
              jfM.setVisible(true);
              jfM.setSize(800, 600);
              jfM.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          }
          
          public void gridJP(){
              
              jp1 = new JPanel(new GridLayout(3, 1, 5, 7));//filas, columnas, espacio entre filas, espacio entre columnas
              //la siguiente linea es para dar margen interior y color al jpanel
              jp1.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createLineBorder(Color.black), BorderFactory.createEmptyBorder(10, 15, 5, 15)));
                      
              jb1= new JButton("B1"); jb2= new JButton("B2"); jb3= new JButton("B3");//creamos los objetos para el panel
              
              jp1.add(jb1); jp1.add(jb2); jp1.add(jb3);//añadimos los objetos al jpanel
              
              jb1.addActionListener(this); jb2.addActionListener(this); jb3.addActionListener(this);
              
              jp1.setVisible(true);
          }
          
          public void bordJP(){
              jp2 = new JPanel(new BorderLayout(2, 3));//espacio entre las regiones, horizontal y vertical
              //la siguiente linea es para dar margen interior y color al jpanel
              jp2.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createLineBorder(Color.white, 3), BorderFactory.createEmptyBorder(10, 15, 65, 15)));
              
              jb1= new JButton("B1"); jb2= new JButton("B2"); jb3= new JButton("B3");//añadiendo objetos al jpanel
              
              jp2.add(jb1, BorderLayout.NORTH);//boton al panel norte
              jp2.add(jb2, BorderLayout.WEST); //boton a la region oeste
              jp2.add(jb3, BorderLayout.CENTER); //boton a la region centro    
              
              jb1.addActionListener(this); jb2.addActionListener(this); jb3.addActionListener(this);
              
              jp2.setVisible(true);
          }
          
          public void flowJP(){
              jp3 = new JPanel(new FlowLayout());
              
              jb1= new JButton("B1"); jb2= new JButton("B2"); jb3= new JButton("B3");//añadiendo objetos al jpanel
              
              jp3.add(jb1); jp3.add(jb2); jp3.add(jb3);//añadimos los objetos al jpanel
              
              jp3.setVisible(true);
          }
          
          public static void main(String[] args) {        
              GuiJava gj = new GuiJava();//uso de constructor para la ventana
          }
      
          @Override
          public void actionPerformed(ActionEvent e) {//sobreescribimos el metodo del listener
              
              if(e.getSource() == jbP1){
                  if(jp1.isVisible()){
                      jp1.setVisible(false);
                  }else
                      jp1.setVisible(true);
              }else if(e.getSource() == jbP2){
                  if(jp2.isVisible()){
                      jp2.setVisible(false);
                  }else
                      jp2.setVisible(true);
                  
              }else if(e.getSource() == jbP3){
                  if(jp3.isVisible()){
                      jp3.setVisible(false);
                  }else
                      jp3.setVisible(true);
                  
              }else{
                  JOptionPane.showMessageDialog(null, e.getActionCommand());
              }
          }
      }

Deja un comentario