Mam okno. W nim przycisk, który wywołuje inne okno. Gdy w tym drugim oknie coś zrobię i je zamykam (dispose) to chcę żeby w pierwszym oknie coś się wykonało (dopiero wtedy gdy zamknę to drugie okno). Jak podejść do tematu? Wątki?
0
0
WindowListener podpięty do drugiego okna i obsługa metody windowClosed.
0
No dobra. Mam w oknie 1 wywołanie okna 2 (po naciśnięciu przycisku):
Okno2 ok2 = new Okno2();
Gdy skończę w tym Okno2 coś robić to klikam przycisk OK i okno się zamyka (dispose). Tutaj powinna się wykonywać dalsza część kodu z Okna1. Jak to zrobić? Bo gdy napiszę np.
if (Okno2.isActivate())
{
...
}
to program leci cały czas (nie czeka na zamknięcie Okna2).
0
Tutaj przekaż referencję do okna1
Okno2 ok2 = new Okno2(this);
Odbierz ją w konstruktorze Okno2 i zachowaj w polu klasy.
W metodzie windowClosed napisz kod, który zmieni cos w oknie1. Przykład:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class DwaOkna
{
public static void main(String[] args)
{
new DwaOkna();
}
public DwaOkna()
{
new Okno1();
}
class Okno1 extends JFrame implements ActionListener
{
private JTextField tf = new JTextField(12);
public Okno1()
{
setTitle("Pierwsze");
setLayout(new FlowLayout());
JButton b = new JButton("Kliknij");
b.addActionListener(this);
add(b);
add(tf);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setLocationRelativeTo(null);
setVisible(true);
}
public void actionPerformed(ActionEvent ae)
{
new Okno2(this);
}
}
class Okno2 extends JFrame
{
private Okno1 okno;
public Okno2(Okno1 okno)
{
this.okno = okno;
addWindowListener(new WindowAdapter()
{
public void windowClosed(WindowEvent we)
{
Okno2.this.okno.tf.setText("Witaj");
}
});
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
pack();
setLocationRelativeTo(null);
setVisible(true);
}
}
}