Fecha y hora actual: Martes 22 Jul 2014 21:34
Índice del Foro

Foros de programación informática, diseño gráfico y Web

En esta comunidad intentaremos dar soporte de programación a todos los niveles, desde principiantes a profesionales de la informática, desarrollo de programas, programación web y mucho más.

Como pasar de un JFrame a otro?

Responder al Tema

Índice del Foro > Java > Como pasar de un JFrame a otro?

Autor Mensaje
israel4652



Registrado: 22 Nov 2011
Mensajes: 2

Mensaje Publicado: Martes 22 Nov 2011 20:32

Título del mensaje: Como pasar de un JFrame a otro?

Responder citando

Hola a todos!!! Vereís, estoy comenzando en java y e creado dos JFrame distintos, uno y dos, en el uno e puesto un JButton y quiero que al pulsarlo se cierre el JFrame y se habrá el JFrame dos, como lo hago?
Que código debo poner? estoy muy flojo en eventos... Gracias a todos de antemano.

Volver arriba
Ver perfil del usuario Enviar mensaje privado
chalanga04



Registrado: 27 Nov 2011
Mensajes: 1

Mensaje Publicado: Domingo 27 Nov 2011 21:56

Título del mensaje: Re: Como pasar de un JFrame a otro?

Responder citando

No es recomendable tener mas de un jframe en una aplicacion si no unicamente uno por aplicacion las demas ventanas seran hijas del jframe Principal y deberan ser JDialog

Volver arriba
Ver perfil del usuario Enviar mensaje privado
jillansa



Registrado: 02 Ene 2012
Mensajes: 1

Mensaje Publicado: Lunes 02 Ene 2012 09:47

Título del mensaje: Re: Como pasar de un JFrame a otro?

Responder citando

Hola estoy aprendiendo Java SE con Swing.

Tengo la misma duda, ¿Como realizo navegaciones entre las pantallas?

He visto que existe el concepto de JPanel para organizar los componentes de una pantalla , y un JFrame (ventana) para realizar la pantalla donde se insertaría el JPanel.

Según tengo entendido JDialog son los mensajes de alerta enviados al usuario no la propias pantallas de aplicación. Disculpar si me equivoco.

Quiero poder navegar de un Frame a otro al capturarse un evento: pulsar un boton, una opcion de menu ... ¡¡Quizá sea necesario usar JPanel para gestionar el cambio de interfaz en la aplicación de forma similar a los marcos!!

Que sabeis de esto??, he probado con este código pero como supongo que sabréis me crea una nueva ventana, y cierra la anterior. Sin embargo quiero mantener la interacción del usuario en la misma ventana.

Código:
JFrame frame2 = new Frame2();
frame2.setVisible(true);                                                                                                               
Frame1.this.dispose();


Saludos y gracias

Volver arriba
Ver perfil del usuario Enviar mensaje privado
eduar2083
Usuario Activo


Registrado: 14 Nov 2008
Mensajes: 233
Ubicación: Lima - Perú

Mensaje Publicado: Martes 03 Ene 2012 03:21

Título del mensaje: Re: Como pasar de un JFrame a otro?

Responder citando

Como ya lo dijeron, no se recomienda tener más de 2 frames por aplicación. En lugar de ello, las demás ventanas serán hijas del frame principal y se presentarán en forma de cajas de diálogos modales o no modales.
Ahora bien, existen 3 categorías de cajas de diálogo:
- PREDEFINIDAS: Creadas usando lo métodos estáticos de la clase JOptionPane de la JFC. Entre dichos métodos están: showMessageDialog, showInputDialog, showConfirmDialog, etc. Todos ellos tienen un primer parámetro que viene a ser la referencia al objeto Component sobre el que se visualiza la caja, aunque también dicho parámetro puede ser null y en ese caso se utiliza el marco por omisión (normalmente el Escritorio)
Un pequeño ejemplo:
Código:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Test extends JFrame
{
   private JButton btnMensaje;
   private JButton btnEntrada;
   private JButton btnConfirma;
   private JLabel lblNombre;

   public Test()
   {
      this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      this.setTitle("Probando Diálogos predefinidos");
      this.setSize(new Dimension(400, 250));

      btnMensaje = new JButton("Saludar");
      btnEntrada = new JButton("Ingresar mi nombre");
      btnConfirma = new JButton("Salir");
      lblNombre = new JLabel();

      Container contenedor = this.getContentPane();

      lblNombre.setHorizontalAlignment(SwingConstants.CENTER);
      lblNombre.setFont(new Font("Arial", Font.BOLD, 16));
      lblNombre.setForeground(Color.BLUE);

      JPanel panelNorte = new JPanel();
      panelNorte.setLayout(new FlowLayout());
      panelNorte.add(btnMensaje);
      panelNorte.add(btnEntrada);
      panelNorte.add(btnConfirma);

      contenedor.add(panelNorte, BorderLayout.NORTH);
      contenedor.add(lblNombre, BorderLayout.SOUTH);

      // Manejando eventos
      ActionListener al = new ActionListener()
      {
         public void actionPerformed(ActionEvent evt)
         {
            Object obj = evt.getSource();
            if (obj == btnMensaje)
               btnMensajeActionPerformed(evt);
            else if (obj == btnEntrada)
               btnEntradaActionPerformed(evt);
            else if (obj == btnConfirma)
               btnConfirmaActionPerformed(evt);
         }
      };
      btnMensaje.addActionListener(al);
      btnEntrada.addActionListener(al);
      btnConfirma.addActionListener(al);
   }

   private void btnMensajeActionPerformed(ActionEvent evt)
   {
      // Centro del marco padre
      JOptionPane.showMessageDialog(this, "Hola, soy un cuadro modal", "Saludo", JOptionPane.INFORMATION_MESSAGE);
   }

   private void btnEntradaActionPerformed(ActionEvent evt)
   {
      // Centro del marco por omisión
      String nombre = JOptionPane.showInputDialog(null, "Ingrese su nombre por favor");
      if (nombre != null && !nombre.isEmpty())
         lblNombre.setText("Hola, " + nombre);
   }

   private void btnConfirmaActionPerformed(ActionEvent evt)
   {
      int respuesta = JOptionPane.showConfirmDialog(this, "¿Está seguro que desea salir?", "Confirmar salida", JOptionPane.YES_NO_OPTION);
      if (respuesta == 0)
         System.exit(0);
   }

   public static void main(String[] args)
   {
      new Test().setVisible(true);
   }
}

El otro tipo de diálogos es:
- ESTÁNDAR. Son cajas muy comunes como abrir o Guardar. Ambas proporcionadas por la clase JFileChooser. Ahora que lo recuerdo también existe la caja de Color proporcionada por la clase JColorChooser:
Realizando una pequeña modificación al anterior:
Código:
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;

public class Test extends JFrame
{
   private JButton btnAbrir;
   private JButton btnGuardar;
   private JButton btnColor;
   private JLabel lblRuta;

   Container contenedor;

   public Test()
   {
      this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      this.setTitle("Probando Diálogos Estándar");
      this.setSize(new Dimension(400, 250));

      btnAbrir = new JButton("Abrir...");
      btnGuardar = new JButton("Guardar");
      btnColor = new JButton("Color...");
      lblRuta = new JLabel();

      contenedor = this.getContentPane();

      lblRuta.setHorizontalAlignment(SwingConstants.CENTER);

      JPanel panelNorte = new JPanel();
      panelNorte.setLayout(new FlowLayout());
      panelNorte.add(btnAbrir);
      panelNorte.add(btnGuardar);
      panelNorte.add(btnColor);

      contenedor.add(panelNorte, BorderLayout.NORTH);
      contenedor.add(lblRuta, BorderLayout.SOUTH);

      // Manejando eventos
      ActionListener al = new ActionListener()
      {
         public void actionPerformed(ActionEvent evt)
         {
            Object obj = evt.getSource();
            if (obj == btnAbrir)
               btnAbrirActionPerformed(evt);
            else if (obj == btnGuardar)
               btnGuardarActionPerformed(evt);
            else if (obj == btnColor)
               btnColorActionPerformed(evt);
         }
      };
      btnAbrir.addActionListener(al);
      btnGuardar.addActionListener(al);
      btnColor.addActionListener(al);
   }

   private void btnAbrirActionPerformed(ActionEvent evt)
   {
      JFileChooser selectorArchivo = new JFileChooser();
      selectorArchivo.setFileSelectionMode(JFileChooser.FILES_ONLY);
      selectorArchivo.setCurrentDirectory(new File("."));

      int resultado = selectorArchivo.showOpenDialog(this);

      if (resultado == JFileChooser.APPROVE_OPTION) {
         String ruta = selectorArchivo.getSelectedFile().getPath();
         lblRuta.setText(ruta);
      }
   }

   private void btnGuardarActionPerformed(ActionEvent evt)
   {
      JFileChooser selectorArchivo = new JFileChooser();

      int resultado = selectorArchivo.showSaveDialog(null);

      if (resultado == JFileChooser.APPROVE_OPTION) {
         String ruta = selectorArchivo.getSelectedFile().getPath();
         lblRuta.setText(ruta);
      }
   }

   private void btnColorActionPerformed(ActionEvent evt)
   {
      Color color = JColorChooser.showDialog(this, "Seleccione un color", Color.GRAY);

      if (color != null)
         contenedor.setBackground(color);
   }

   public static void main(String[] args)
   {
      new Test().setVisible(true);
   }
}


Por último, se tiene a las cajas de diálogo:
-PERSONALIZADAS: Son hechas a medida extendiendo la clase JDialog de la JFC.
(Cuando disponga de tiempo preparo uno de este tipo...)

Un JPanel no es más que un contenedor de componentes (incluyendo otros paneles) y se utiliza generalmente para organizar la distribución de los controles en un contenedor de alto nivel (JFrame, JDialog, JApplet).

EDITO: Realizo corrección al procesar diálogo abrir y guardar.

Un saludo.

Volver arriba
Ver perfil del usuario Enviar mensaje privado
Responder al Tema
Mostrar mensajes anteriores:   
Ir a:  
Todas las horas están en GMT + 2 Horas

Temas relacionados

Tema Autor Foros Respuestas Publicado
El foro no contiene ningún mensaje nuevo

Cómo pongo código bien en blogspot?

Tachikomaia Temas generales 1 Martes 22 Jul 2014 07:10 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Como puedo saber los parametros que debo inclui...

P3p3 Java 2 Jueves 10 Jul 2014 19:41 Ver último mensaje
El foro no contiene ningún mensaje nuevo

como instalar python en komode edit

aescriban Python 0 Miércoles 09 Jul 2014 09:13 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Como instalar las librerias de apache en netbeans.

P3p3 Java 4 Lunes 07 Jul 2014 22:43 Ver último mensaje
El foro no contiene ningún mensaje nuevo

como conectar netbeans con mysql y guardar regi...

mily Java 0 Jueves 03 Jul 2014 00:32 Ver último mensaje
Panel de Control
No puede crear mensajes, No puede responder temas, No puede editar sus mensajes, No puede borrar sus mensajes, No puede votar en encuestas,