Autor Tema: Llamar a clase al hacer click en JTabbedPaned java  (Leído 7389 veces)

cardiobeta

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 39
    • Ver Perfil
Llamar a clase al hacer click en JTabbedPaned java
« en: 03 de Febrero 2013, 17:08 »
Hola a todos. Tengo un JTabbedPaned con dos paneles: 1 y 2. El asunto es que no se como llamar a una nueva clase al pulsar el panel 2. Gracias de antemano.
« Última modificación: 05 de Septiembre 2014, 10:30 por Alex Rodríguez »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2074
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:Llamar a clase al hacer click en JTabbedPaned
« Respuesta #1 en: 04 de Febrero 2013, 08:36 »
No entiendo muy bien la pregunta. Puede que estemos hablando de diferentes cuestiones:

por un lado, si tienes un panel y no sabes cómo hacer que se ejecute un fragmento de código cuando el usuario haga click sobre él, tendrás que usar listeners (oyentes) de eventos.

Si te refieres a cómo acceder al código de una clase, tienes varias opciones como:

- Que un objeto de la clase sea atributo de la clase donde tienes los JTabbedPane

- Crear un objeto de la nueva clase usando la sentencia new y un constructor adecuado como respuesta a la pulsación de la pestaña, siempre que tengas visibilidad entre las clases

- Usar el patrón Singleton para acceder a código en otra clase sin necesidad de crear un objeto de esa otra clase. Con el patrón Singleton puedes tener un objeto único (no instanciable) al que poder acceder desde cualquier otra clase.
Responsable de departamento de producción aprenderaprogramar.com

cardiobeta

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 39
    • Ver Perfil
Re:Llamar a clase al hacer click en JTabbedPaned
« Respuesta #2 en: 06 de Febrero 2013, 02:26 »
El asunto es que tengo una clase llamada inicio y en el metodo initComponentes existe el siguiente fragmento de codigo:
            pestaña.addTab("Evaluacion clinica", panel1);
             panel1 = new Evaluacion();
             getContentPane().add(pestaña);
Quisiera que cuando se haga click en el panel 1 se llame a la clase Evaluacion. Gracias de antemano.

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2074
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:Llamar a clase al hacer click en JTabbedPaned
« Respuesta #3 en: 06 de Febrero 2013, 14:19 »
Ejecuta este código de ejemplo, creo que te sirva. En él se crea un JTabbedPane con tres pestañas: ficha uno, ficha 2 y ficha 3. Cuando se elige la ficha 2 y se pulsa sobre el panel 2 se abre una ventana de consola donde aparece el mensaje "Has hecho click sobre el panel", si vuelves a hacer click te vuelve a aparecer el mensaje (sin cerrar la ventana de consola, porque si no no ves el mensaje) tantas veces como hagas click.

Para poder hacer uso de esta utilidad tienes que incluir:

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

Luego usando el nombre de tu panel (en el ejemplo el nombre es panel2 tienes que añadir un listener del evento del ratón mousePressed (click del ratón):

panel2.addMouseListener(new MouseAdapter() {
          public void mousePressed(MouseEvent me) {
            System.out.println("Has hecho click sobre el panel");
          }
        });

En este caso mostramos un mensaje, pero en tu caso puedes invocar un método de otra clase o introducir el código que quieras.

Código:

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 );
       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");
          }
        });
       
       // 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
Responsable de departamento de producción aprenderaprogramar.com

cardiobeta

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 39
    • Ver Perfil
Re:Llamar a clase al hacer click en JTabbedPaned
« Respuesta #4 en: 07 de Febrero 2013, 02:28 »
Ya resolvi. Con el siguiente código llamo a la clase Evaluacion. Una vez ejecutada la clase pongo el sigueinte codigo para verificar que estoy en ella:
 public Evaluacion() {
              try {              
                     System.out.println("Hola");
              } catch(Exception e){
                 
              }       
          
    }
 El sistema imprime "Hola". Ahora el asunto es adicionar los componentes que estaran presentes en ese Panel, usando esa clase.

 

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".