Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Enviar Datos a JFrame anterior

Buenos Días,

Estoy trabajando con jFrames, tengo un jFrame principal, el cual llama a un segundo jFrame (jFrame2 por ejemplo). Lo que necesito es que en ese jFrame2 haya 9 botones con imágenes dentro de cada botón (HASTA AQUÍ TODO PERFECTO). Entonces cuando en el jFrame2 pulse un botón, este se cierre y envíe un string al jFram1e, el cual estará deberá quedarse esperando que el jFrame2 acabe para recibir el string y enviar una orden de JSON al servidor con ese dato.
No se si es mucho lío o si me expliqué bien.

Les paso parte del código que tengo a ver si me podéis ayudar:

////// clase jFrame1 //////

public class jFrame1 extends javax.swing.JFrame{

public JTextField JTextField1;
public JTextField JTextField2;
public JTextField JTextField3;
private JButton jButton1;

.....

}

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
jFrame2 regPack = new jFrame2();
regPack.setLocationRelativeTo(null);
regPack.setVisible(true);

//AQUI QUIERO QUE EL PROGRAMA ESPERE LA RESPUESTA AL CERRAR EL JFRAME Y CONTINUE EJECUTANDOSE

....
}


////// clase jFrame2 //////

public class jFrame2 extends javax.swing.JFrame{

private JButton jButton1;
private JButton jButton2;

public jFrame2(){
}

.....

}

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
//AQUI QUIERO ENVIAR UN DATO AL JFRAME ANTERIOR ANTES DE CERRAR ESTE JFRAME
this.dispose();
}

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
//AQUI QUIERO ENVIAR UN DATO AL JFRAME ANTERIOR ANTES DE CERRAR ESTE JFRAME
this.dispose();
}

abril 11, 2014 | Unregistered CommenterProgramerJuniorJAVA

La solución más sencilla sería usar un PropertyChangeListener en el JFrame2.

http://docs.oracle.com/javase/tutorial/uiswing/events/propertychangelistener.html

abril 11, 2014 | Registered Commenterchoces

Como este tipo de soluciones pueden ser confusas al principio, te adjunto un test donde puedes ver cómo se usa.


import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Frame2 extends javax.swing.JFrame {

private static final long serialVersionUID = 4_751_412_570_988_645_066L;

/** Creates new form Frame2 */
public Frame2() {
initComponents();
jButton1.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
Frame2.this.firePropertyChange("jButton1", null, "botón 1 pulsado");
Frame2.this.dispose();
}
});
jButton2.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
Frame2.this.firePropertyChange("jButton2", null, "botón 2 pulsado");
Frame2.this.dispose();
}
});
}

/** This method is called from within the constructor to
initialize the form.
WARNING: Do NOT modify this code. The content of this method is
always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

org.openide.awt.Mnemonics.setLocalizedText(jButton1, org.openide.util.NbBundle.getMessage(Frame2.class, "Frame2.jButton1.text")); // NOI18N

org.openide.awt.Mnemonics.setLocalizedText(jButton2, org.openide.util.NbBundle.getMessage(Frame2.class, "Frame2.jButton2.text")); // NOI18N

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap(226, Short.MAX_VALUE)
.addComponent(jButton2)
.addGap(18, 18, 18)
.addComponent(jButton1)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap(266, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton1)
.addComponent(jButton2))
.addContainerGap())
);

pack();
}// </editor-fold>

// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
// End of variables declaration
}

abril 11, 2014 | Registered Commenterchoces

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;

public class Frame1 extends javax.swing.JFrame {

private static final long serialVersionUID = 6_179_579_884_928_667_737L;

/** Creates new form Frame1 */
public Frame1() {
initComponents();
jButton1.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
Frame2 frame2 = new Frame2();
frame2.addPropertyChangeListener(new PropertyChangeListener() {

@Override
public void propertyChange(PropertyChangeEvent evt) {
String nombre = evt.getPropertyName();
if ("jButton1".equals(nombre) || "jButton2".equals(nombre)) {
System.out.println(evt.getNewValue());
// saldrá por la consola "botón 1 pulsado" o "botón 2 pulsado"
}
}
});
frame2.setVisible(true);
}
});
}

/** This method is called from within the constructor to
initialize the form.
WARNING: Do NOT modify this code. The content of this method is
always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

jButton1 = new javax.swing.JButton();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

org.openide.awt.Mnemonics.setLocalizedText(jButton1, org.openide.util.NbBundle.getMessage(Frame1.class, "Frame1.jButton1.text")); // NOI18N

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap(317, Short.MAX_VALUE)
.addComponent(jButton1)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap(266, Short.MAX_VALUE)
.addComponent(jButton1)
.addContainerGap())
);

pack();
}// </editor-fold>

/**
@param args the command line arguments
*/
public static void main(String args[]) {
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new Frame1().setVisible(true);
}
});
}

// Variables declaration - do not modify
private javax.swing.JButton jButton1;
// End of variables declaration
}

abril 11, 2014 | Registered Commenterchoces