Foros del Web » Programación para mayores de 30 ;) » Java »

Pasar datos entre Frames

Estas en el tema de Pasar datos entre Frames en el foro de Java en Foros del Web. Sludos, tengo un problemita, resulta que tengo dos Frames con las siguientes caracteristicas: 1) El primer Frame tiene un TextField y un Boton 2) Al ...
  #1 (permalink)  
Antiguo 01/03/2011, 10:55
 
Fecha de Ingreso: febrero-2011
Mensajes: 6
Antigüedad: 13 años, 2 meses
Puntos: 0
Pasar datos entre Frames

Sludos, tengo un problemita, resulta que tengo dos Frames con las siguientes caracteristicas:

1) El primer Frame tiene un TextField y un Boton
2) Al hacer clic en el Boton me de llevar a otro Frame
3) El segundo Frame tiene un formato para ingresar un valor x
4) Dependiendo del valor del TextField del primer Frame, me aparecen x numero de veces el Frame 2.

Es lineas generales ingreso un dato numerico en el textfield le doy al boton e inmediatamente me aparece una ventana para ingresar una informacion, le doy a aceptar y la almacena en una variable, y se vuelve a abrir el Frame con el mismo formulario, esto debe hacerlo segun el valor ingresado en Frame 1, pero la idea es que el frame 2 aparezca uno, se llena la info y se da en aceptar, y vuelve a aparecer la ventana, se llena el formulario , se acepta y asi sucesivamente, obviamente solo deben haber dos Frames Activos en todo momento, es decir no quiero que me aparezcan x veces el Frame2 simultaneamente, sino que se vayan cerrando conforme a lo ingresado.
  #2 (permalink)  
Antiguo 01/03/2011, 11:42
Avatar de jhonmelguizo  
Fecha de Ingreso: enero-2008
Ubicación: Medellín - Colombia
Mensajes: 264
Antigüedad: 16 años, 3 meses
Puntos: 6
De acuerdo Respuesta: Pasar datos entre Frames

¿...?

Bueno pues podéis utilizar una variable estática, en cualquiera de las dos clases, dónde evalues las condiciones o si es necesario creas una variable estatica por cada frame

public static String dato1 = null;

una vez empieces a ingresar valores en la variable, esta queda accesible desde cualquier parte para invocarla escribes el nombre de la clase seguido de la variable:

MiClase.dato1

Espero sea de ayuda.

Saludos...
__________________
¡No competimos, compartimos!...
  #3 (permalink)  
Antiguo 01/03/2011, 12:08
 
Fecha de Ingreso: febrero-2011
Mensajes: 6
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Pasar datos entre Frames

mmm aun no estoy con las variables, lo explicare mejor porque creo que no me hice entender:

Tengo dos Frames de la siguiente forma:

Frame1: Un textField y un Button
Frame 2: Un textField y un Button

El programa debe funcionar asi:

Se ejecuta el Frame1(el Frame 2 debe estar oculto o desactivado), en el textfield ingreso un dato numero que representa el numero de veces que se va a abrir el Frame2, si le doy al boton del Frame1, este debe llamar al Frame2, hasta ahi todo facil, pero una vez que el Frame2 esta abierto, debo ingresarle un dato cualquiera a su textField, y si le doy a aceptar este debe quedar almacenado en una variable, y debe volver a ejecutar el mismo Frame2 para seguir ingresando datos en el textField, el numero de veces que se abre el Frame2 es el numero ingresado en el TextField del Frame1, mi problema es que no se como hacer para llamar a cada rato al Frame2, y esperar que me entregue una respuesta, para volverlo a llamar.
  #4 (permalink)  
Antiguo 01/03/2011, 13:17
Avatar de sivadmp  
Fecha de Ingreso: febrero-2011
Ubicación: La Paz - Bolivia
Mensajes: 293
Antigüedad: 13 años, 2 meses
Puntos: 20
Respuesta: Pasar datos entre Frames

hola porque no utilizas funciones

es decir dentro del frame 2 tienes una funcion que se llama adicionarDato

Código java:
Ver original
  1. public void adicionarDato(String dato){
  2.      textField2.setText(dato);
  3. }

a esta funcion lo llamas desde tu frame1

Código java:
Ver original
  1. String dato=textfield1.getText();
  2.  
  3. Frame2 f=new Frame2();
  4. f.adicionarDato(dato);

saludos
  #5 (permalink)  
Antiguo 02/03/2011, 07:00
Avatar de djagu_26  
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 518
Antigüedad: 16 años, 3 meses
Puntos: 6
Respuesta: Pasar datos entre Frames

Hola puedes mirar estos threads que ya se respondio como hacerlo.

http://www.forosdelweb.com/f45/pasar...jframe-344725/

http://chuwiki.chuidiang.org/index.p...e_dos_ventanas

Saludos
__________________
"La magia no existe, la programacion si"

A/P Agustin Sivoplas
[email protected]
  #6 (permalink)  
Antiguo 02/03/2011, 10:41
 
Fecha de Ingreso: noviembre-2008
Mensajes: 59
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Pasar datos entre Frames

¿En vez de crear una instancia nueva del Frame2 y cerrarla una y otra vez, por qué simplemente no borras la información de los elementos gráficos (textfield) y lo almacenas en alguna variable global?
  #7 (permalink)  
Antiguo 02/03/2011, 22:23
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: Pasar datos entre Frames

Hola,

Cita:
Iniciado por josichu Ver Mensaje
... mi problema es que no se como hacer para llamar a cada rato al Frame2, y esperar que me entregue una respuesta, para volverlo a llamar.
Usa un JDialog en forma modal.

Código Java:
Ver original
  1. JDialog1 jDialog1 = new JDialog1(this, true); // true == modal
  2.         jDialog1.setVisible(true);
Y para abrir el formulario muchas veces existen otros métodos mas eficientes de obtener información, por ejemplo usando un JTable:

Código Java:
Ver original
  1. package application;
  2.  
  3. public class JDialog1 extends javax.swing.JDialog {
  4.  
  5.     private javax.swing.JButton jButton1;
  6.     private javax.swing.JScrollPane jScrollPane1;
  7.     private javax.swing.JTable jTable1;
  8.  
  9.     public JDialog1(java.awt.Frame parent, boolean modal, int quantity) {
  10.         super(parent, modal);
  11.  
  12.         jScrollPane1 = new javax.swing.JScrollPane();
  13.         jTable1 = new javax.swing.JTable();
  14.         jButton1 = new javax.swing.JButton();
  15.  
  16.         setDefaultCloseOperation(javax.swing.WindowConstants.HIDE_ON_CLOSE);
  17.         getContentPane().setLayout(new javax.swing.BoxLayout(getContentPane(), javax.swing.BoxLayout.PAGE_AXIS));
  18.  
  19.         jScrollPane1.setPreferredSize(new java.awt.Dimension(200, 200));
  20.  
  21.         jTable1.setModel(new TableModel(quantity));
  22.         jScrollPane1.setViewportView(jTable1);
  23.  
  24.         getContentPane().add(jScrollPane1);
  25.  
  26.         jButton1.setText("Aceptar");
  27.         jButton1.addActionListener(new java.awt.event.ActionListener() {
  28.             @Override
  29.             public void actionPerformed(java.awt.event.ActionEvent evt) {
  30.                 jButton1ActionPerformed(evt);
  31.             }
  32.         });
  33.         getContentPane().add(jButton1);
  34.  
  35.         pack();
  36.         setLocationRelativeTo(parent);
  37.     }
  38.  
  39.     private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
  40.         setVisible(false);
  41.     }
  42.  
  43.     public String[] getValues() {
  44.         return ((TableModel)jTable1.getModel()).getValues();
  45.     }
  46.  
  47.     private class TableModel extends javax.swing.table.AbstractTableModel {
  48.  
  49.         private int quantity = 0;
  50.         private String values[];
  51.  
  52.         public TableModel(int quantity) {
  53.             this.quantity = quantity;
  54.             this.values = new String[quantity];
  55.         }
  56.  
  57.         @Override
  58.         public int getRowCount() {
  59.             return quantity;
  60.         }
  61.  
  62.         @Override
  63.         public int getColumnCount() {
  64.             return 2;
  65.         }
  66.  
  67.         @Override
  68.         public Object getValueAt(int rowIndex, int columnIndex) {
  69.             return columnIndex == 1 ? values[rowIndex] :
  70.                 "Valor " + String.valueOf(rowIndex + 1);
  71.         }
  72.  
  73.         @Override
  74.         public Class<?> getColumnClass(int columnIndex) {
  75.             return String.class;
  76.         }
  77.  
  78.         @Override
  79.         public boolean isCellEditable(int rowIndex, int columnIndex) {
  80.             return columnIndex == 1;
  81.         }
  82.  
  83.         @Override
  84.         public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
  85.             this.values[rowIndex] = String.valueOf(aValue);
  86.         }
  87.  
  88.         public String[] getValues() {
  89.             return values;
  90.         }
  91.  
  92.     }
  93.  
  94. }

Y usando un Spinner para en número de filas:

Código Java:
Ver original
  1. package application;
  2.  
  3. public class JFrame1 extends javax.swing.JFrame {
  4.  
  5.     private javax.swing.JButton jButton1;
  6.     private javax.swing.JSpinner jSpinner1;
  7.  
  8.     public JFrame1() {
  9.         jSpinner1 = new javax.swing.JSpinner();
  10.         jButton1 = new javax.swing.JButton();
  11.  
  12.         jSpinner1.setValue(10);
  13.  
  14.         setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
  15.         getContentPane().setLayout(new javax.swing.BoxLayout(getContentPane(), javax.swing.BoxLayout.PAGE_AXIS));
  16.         getContentPane().add(jSpinner1);
  17.  
  18.         jButton1.setText("Valores");
  19.         jButton1.addActionListener(new java.awt.event.ActionListener() {
  20.             @Override
  21.             public void actionPerformed(java.awt.event.ActionEvent evt) {
  22.                 jButton1ActionPerformed(evt);
  23.             }
  24.         });
  25.         getContentPane().add(jButton1);
  26.  
  27.         pack();
  28.         setLocationRelativeTo(null);
  29.     }
  30.  
  31.     private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
  32.         JDialog1 jDialog1 = new JDialog1(this, true,
  33.                 Integer.parseInt(String.valueOf(jSpinner1.getValue())));
  34.         jDialog1.setVisible(true);
  35.         for (String valor : jDialog1.getValues())
  36.             System.out.println(valor);
  37.     }
  38.  
  39. }

Saludos,

Etiquetas: frames, pasar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:33.