NetBeans crea este código en el constructor de el JFrame:
public MyFrame() {
initComponents();
}
para pasarle parametros al constructor solo tienes que
copiar el constructor que crea NetBeans por defecto, a
uno nuevo:
---------- MyFrame.java ----------
// extends javax.swing.JFrame
Habitacion temp;
public MyFrame(Habitacion temp) {
initComponents();
setLocationRelativeTo(null);
this.temp = temp;
this.temp.x = 25;
}
de esta forma ya puedes usar el objecto "habitacion"
dentro de MyFrame donde sea, y todos los cambios
en las propiedades de ese objecto se van a ver
reflejadas en el principal, por ejemplo, para llamar
el JFrame:
---------- MyMainFrame.java ----------
// extends javax.swing.JFrame
habitacion temp;
public MyMainFrame() {
temp = new habitacion();
}
public button_actionlistener(...evt) {
temp.x = 10;
new MyFrame(temp).show(); // crea el objeto, lo muestra y cambia a 25
// aquí el programa sigue corriendo sin detenerse. ***********
System.out.println(temp.x); // 25
}
el problema es que el programa seguiría ejecutándose,
y solo en el constructor podrías cambiar los valores.
Para que pueda mostrar una ventana y el programa se dentenga y -- se "bloquee"--,
debes usar una ventana "modal" JDialog en lugar de JFrame. Puedes probar
este ejemplo de JDialog.
---------- example.java ----------
public class example {
public final static long serialVersionUID = 40974097;
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
habitacion temp = new habitacion(0);
System.out.println("VALOR DE HABITACION ANTES : " + temp.x); // *** 0 ***
new dialog(null, true, temp).setVisible(true);
System.out.println("VALOR DE HABITACION AHORA : " + temp.x); // *** 25 ***
}
});
}
}
---------- dialog.java ----------
public class dialog extends javax.swing.JDialog {
public final static long serialVersionUID = 40964096;
private habitacion temp;
public dialog(java.awt.Frame parent, boolean modal, habitacion temp) {
super(parent, modal);
setLocationRelativeTo(parent);
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("DIALOG DE EJEMPLO");
javax.swing.JButton jButton1 = new javax.swing.JButton("<html><h1>PRESIONE PARA SALIR</h1></html>");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
add(jButton1);
pack();
this.temp = temp;
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
this.temp.x = 25;
this.dispose();
}
}
---------- habitacion.java ----------
public class habitacion { // esta es una clase donde se guardan los datos
public int x;
public habitacion(int x) {
this.x = x;
}
}