Zamknięcie okna po utworzeniu nowego

0

Witam

W klasie

public class ButtonPanel2 extends JPanel implements ActionListener  {

tworzę nowe okno

public void actionPerformed(ActionEvent e)   {
		Object source = e.getSource();

		if(source == appleButton)
			new AppleFrame();

klasy AppleFrame.

Chcę by po utworzeniu tego okna, zamknęło się okno innej klasy SecondFrame

ublic class SecondFrame extends JFrame {

	public SecondFrame()  { 
		super("Katalog - przegladaj");
		
JPanel buttonPanel2 = new ButtonPanel2();
		
		add(buttonPanel2);

Pomysł miałem taki aby po

if(source == appleButton)
			new AppleFrame();

dać coś w stylu SecondFrame.dispose(); ale nie działa.

Głownie problem w tym żeby jakoś z tej klAasy ButtonPanel2 odwołać się do SecondFrame i zamknąć to okno.
Może ktoś już miał podobny problem ?
Z góry dzięki.

1

W klasie ButonPanel2 przechowuj referencję do klasy SecondFrame, np o nazwie sf, kod zamykający wygląda tak:

sf.setVisible(false);

Referencję możesz przekazać w konstruktorze.

0

Na pewno robię coś źle :

W konstruktorze public ButtonPanel2() tworzę

 SecondFrame sf;

.
A następnie

 public void actionPerformed(ActionEvent e)   {
		Object source = e.getSource();

	        if(source == appleButton)
        AppleFrame.ShowAppleFrame();
		sf.setVisible(false); 

I nie działa.

0

A gdzie jest przekazywanie referencji?

0

Jakbyś mógł mnie oświecić, bo jeszcze wiele problemów przede mną :-)

1

Coś takiego

//w klasie ButtonPanel2
SecondFrame sf = null; //definicja pola
ButtonPanel2(SecondFrame sf) //konstruktor
{
    this.sf = sf;
    ...
}
//w klasie tworzącej ButtonPanel2 - zakładam, że to klasa SecondFrame, jeśli jest inaczej, to będzie trochę komplikacji 
...new ButtonPanel(this);
0

Dzięki wielkie, działa :-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1