简体   繁体   中英

Displaying JFrame

I'm having issues figuring out how to open one window when another closes if the other window is initiated within a sub class. Here is the clumsy code I am trying to use, but it halts the setting visible of the sub classe's window. Perhaps due to it being within an action event or perhaps it is halting the main thread.

    tutorial = new tutorialWindow();
    this.setVisible(false);
    tutorial.setLocationRelativeTo(null);
    tutorial.setVisible(true);
    tutorial.setCurrentUser(users.getCurrentUser());

    while(tutorial.isOpen() == true ) {
    }
    this.setVisible(true);
    users.updateUser(tutorial.getCurrentUser());

My thoughts were that it would just get stuck in the section of code until the other window closes and would then appear again when the tutorialWindow has a Open boolean set to false due to it breaking the while loop.

Im sure this is a matter of using correct threads, or perhaps the various notify methods but as of now I am not sure how to do that.

You could do it using WindowListener . In the following sample WindowAdapter implements WindowListener and I just override the public void windowClosed(final WindowEvent e) method, opening the second window.

import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;

public class TestJFrame {

    public static void main(final String args[]) {
        JFrame jFrame1 = new JFrame();
        jFrame1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        jFrame1.add(new JLabel("First JFrame"));
        jFrame1.pack();

        final JFrame jFrame2 = new JFrame();
        jFrame2.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        jFrame2.add(new JLabel("Second JFrame"));
        jFrame2.pack();

        jFrame1.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosed(final WindowEvent e) {
                jFrame2.setVisible(true);
            }
        });

        jFrame1.setVisible(true);

    }

}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM