Fecha y hora actual: Jueves 18 Sep 2014 03:36
Í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

Como hacer funcionables los botones (open, clos...

Pico C, C#, Visual C++ 8 Domingo 14 Sep 2014 17:22 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Como imprimir un informe o rdlc

monxu88 Visual Basic .NET 0 Viernes 12 Sep 2014 19:55 Ver último mensaje
El foro no contiene ningún mensaje nuevo

AYUDA!como hacer este arreglo biodimensional

End3rkid C, C#, Visual C++ 1 Lunes 08 Sep 2014 19:44 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Depurar un proyecto que llama a otro en una Sol...

sapales Visual Basic .NET 2 Viernes 22 Ago 2014 14:49 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Cómo una variable puede indicar qué function usar?

Tachikomaia Programación en general 3 Viernes 22 Ago 2014 14:17 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,