Auf Thema antworten

Hier ein Beispiel:

[code=Java]

import java.awt.event.*;

import javax.swing.*;


public class Test {


    private JFrame frame1;

    private JFrame frame2;


    private void showOtherFrame(ActionEvent e) {

        JComponent comp = (JComponent) e.getSource();

        JFrame frame = (JFrame) SwingUtilities.getWindowAncestor(comp);


        JFrame toShow = frame == frame1 ? frame2 : frame1;

        JFrame toHide = frame == frame1 ? frame1 : frame2;

        switchFrames(toShow, toHide);

    }


    private void switchFrames(JFrame toShow, JFrame toHide) {

        SwingUtilities.invokeLater(() -> {

            toShow.setVisible(true);

            toShow.toFront();

            toHide.setVisible(false);

        });

    }


    public void run() {

        frame1 = buildFrame("Frame 1");

        frame2 = buildFrame("Frame 2");

        frame1.setVisible(true);

    }


    private JFrame buildFrame(String title) {

        JButton toggle = new JButton("Zum anderen Fenster...");

        toggle.addActionListener(this::showOtherFrame);


        JPanel panel = new JPanel();

        panel.add(toggle);


        JFrame frame = new JFrame(title);

        frame.add(panel);

        frame.addWindowListener(new WindowAdapter() {

            @Override

            public void windowClosing(WindowEvent e) {

                frame1.dispose();

                frame2.dispose();

            }

        });

        frame.setSize(600, 400);

        return frame;

    }


    public static void main(String[] args) {

        SwingUtilities.invokeLater(() -> new Test().run());

    }

}[/code]



Oben