Autor Tema: Agregar Jlabel a JPanel java  (Leído 32147 veces)

cardiobeta

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 39
    • Ver Perfil
Agregar Jlabel a JPanel java
« en: 16 de Febrero 2013, 02:03 »
Hola a todos. Tengo una clase llamada Inicio en la cual, a traves del metodo initCimponents se crea un JTabbedPaned y se adiciona un panel1 donde se crean todos sus componentes (Jlabel y JTextfield, etc) y un Panel llamado Panel2. Cuando hago click en el Panel2 se llama a una clase llamada Evaluacion. El asunto es que no puedo en esta ultima clase crear un metodo para generar  los distintos componentes de dicho panel2. Gracias por la ayuda.
« Última modificación: 05 de Septiembre 2014, 10:27 por Alex Rodríguez »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2662
    • Ver Perfil
Re:Agregar Jlabel a JPanel
« Respuesta #1 en: 16 de Febrero 2013, 21:22 »
¿Por qué quieres agregar esos componentes desde la clase Evaluacion y no desde la clase donde defines el panel? ¿Puedes poner el código para verlo?

cardiobeta

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 39
    • Ver Perfil
Re:Agregar Jlabel a JPanel
« Respuesta #2 en: 24 de Febrero 2013, 00:51 »
El asunto es que quiero ir adicionando componentes al panel en forma dinámica. Tengo 2 clases: una que es la clase principal que se llama inicio (en ella el metodo initComponents diseña los componentes del panel0 y en la clase llamada Evaluacion quiero  adicionar los componentes del panel1. El codigo que crea el panel 1 en inicio es el siguiente:
JPanel panel1 = new JPanel();
        panel1.setBorder(BorderFactory.createTitledBorder(""));     
        panel1 = new Evaluacion();
             pestaña.addTab("Evaluacion clinica", panel1);
Ahora en la clase evaluacion el codigo es el siguiente:
class Evaluacion extends JPanel {
         
       private javax.swing.JLabel jLabel1;      
            private java.awt.Panel panel1;
    public Evaluacion() {
            try{
                
                    diseñar();               
              
                   
                   
                  } catch (Exception ev){
                     
                  }
           
           
    }

    private void diseñar() {
             
             Label label21 = new Label();
        label21.setFont(new java.awt.Font("DejaVu Sans", 1, 24));
        label21.setText("Fecha:");
             
        label21.setBounds(0,100,20,20);
             
             label21.setVisible(true) ;
           
             System.out.println("Hasta aqui todo bien");
             panel1.add(label21);           
    }   
}
 El System.out.printin lo puse para ver donde estaba el error.  Cuando ejecuto el codigo en el panel 1 no aparece el label pero si  el "Hasta aqui todo bien", osea que el error esta en panel1.add(label21). Gracias por el interes y disculpa lo tarde en repicar.
          

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:Agregar Jlabel a JPanel
« Respuesta #3 en: 25 de Febrero 2013, 08:40 »
Aquí tienes un ejemplo de cómo modificar un panel desde otra clase distinta a aquella en la que se crea, a ver si te sirve:

Clase donde se crea el JPanel:

Código: [Seleccionar]
import java.awt.*;
import javax.swing.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
//Ejemplo para post foro aprenderaprogramar.com

public class DemoJTabbedPane extends JFrame  {



   // configurar GUI
   public DemoJTabbedPane() {
       
      super( "Demo de JTabbedPane " );
 
       // crear objeto JTabbedPane
       JTabbedPane panelConFichas = new JTabbedPane();
       
       
      // establecer pane11 y agregarlo al objeto JTabbedPane
      JLabel etiqueta1 = new JLabel( "panel uno", SwingConstants.CENTER );
       JPanel panel1 = new JPanel();
       panel1.add( etiqueta1 );
       panelConFichas.addTab( "Ficha uno", null, panel1, "Primer panel" );
       
       // establecer panel2 y agregarlo al objeto JTabbedPane
       JLabel etiqueta2 = new JLabel( "panel dos", SwingConstants.CENTER );
       final JPanel panel2 = new JPanel();
       panel2.setBackground( Color.YELLOW );
       panel2.add( etiqueta2 );
       panelConFichas.addTab( "Ficha dos", null, panel2, "Segundo panel" );
       
   
    panel2.addMouseListener(new MouseAdapter() {
          public void mousePressed(MouseEvent me) {
            System.out.println("Has hecho click sobre el panel");
            Evaluacion ev = new Evaluacion();
            ev.cambiarColor(panel2);
          }
        });
       
       // establecer panel3 y agregarlo al objeto JTabbedPane
       JLabel etiqueta3 = new JLabel( "panel tres" );
       JPanel panel3 = new JPanel();
       panel3.setLayout( new BorderLayout() ); 
       panel3.add( new JButton( "Norte" ), BorderLayout.NORTH );
       panel3.add( new JButton( "Oeste" ), BorderLayout.WEST );
       panel3.add( new JButton( "Este" ), BorderLayout.EAST );
      panel3.add( new JButton( "Sur" ), BorderLayout.SOUTH );
       panel3.add( etiqueta3, BorderLayout.CENTER );
       panelConFichas.addTab( "Ficha tres", null, panel3, "Tercer panel" );
 
       // agregar objeto JTabbedPane al contenedor
       getContentPane().add( panelConFichas );
 
       setSize( 250, 200 );
       setVisible( true );
       
    } // fin del constructor
   
    public static void main( String args[] )
    {
       DemoJTabbedPane demoPanelConFichas = new DemoJTabbedPane();
       demoPanelConFichas.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    }
 
 } // fin de la clase DemoJTabbedPane

Clase donde se modifica el JPanel:

Código: [Seleccionar]
import java.awt.*;
import javax.swing.*;

public class Evaluacion {

    private int x;

//Constructor
    public Evaluacion()    {
        x = 0;
       
    }

    public void cambiarColor(JPanel panelRecibido) {
       
        if (panelRecibido.getBackground() == Color.YELLOW) {
        panelRecibido.setBackground( Color.GREEN );
    }
    else {panelRecibido.setBackground( Color.YELLOW );}
       
    }
}
Responsable de departamento de producción aprenderaprogramar.com

cardiobeta

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 39
    • Ver Perfil
Re:Agregar Jlabel a JPanel
« Respuesta #4 en: 26 de Febrero 2013, 03:11 »
Gracias por la respuesta. Tu sugerencia me permitio resolver el problema. Ahora cuando adiciono el label aparece en posicion central y en la parte superior. No se porque pasa eso aun cuando en el diseño del JLabel aparece donde debe crearse. ¿Alguna idea?.

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:Agregar Jlabel a JPanel
« Respuesta #5 en: 26 de Febrero 2013, 13:20 »
Puede que sea debido a que se trate de otro objeto y no el que tú estás suponiendo que es, tendría que ver el código
Responsable de departamento de producción aprenderaprogramar.com

cardiobeta

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 39
    • Ver Perfil
Re:Agregar Jlabel a JPanel
« Respuesta #6 en: 26 de Febrero 2013, 13:47 »
Ya lo resolvi. Lo que pasa es que el diseño predeterminado de los jPanel es FlowLayout. Leyendo y averiguando en la red pude conocer que lo que tenia que hacer es poner null el diseño y asi se pueden colocar los objetos que uno desee en cualquier posición. Para anular el Flowlayout sencillamente en la clase que construye el panel1 (es decir Inicio) escribí: panel1.setLayout(null); De esta manera puedo adicionar el jLabel y cualquier componente en cualquier ubicación dentro del jPanel. Nuevamente gracias por todo y espero que esto sirva a otros por si llegan a tener la misma dificultad. 

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".