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]