Überschreiben einer JFrame

hanspeter99

Grünschnabel
So erst einmal zu meinem Problem. Hab ein Main Menü das wie folgt aussieht:
import javax.swing.*;

import java.awt.event.*;
import java.awt.*;

public class Main extends JFrame{

public Main(){
super();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//Hintergrund Bild laden
ImageIcon icon = new ImageIcon(Main.class.getResource("../main_bild.jpg"));
JLabel bild = new JLabel(icon);
bild.setSize(icon.getIconWidth(),icon.getIconHeight());

//Hintergrund setzen und ContentPane durchsichtig machen
JLayeredPane lay = this.getLayeredPane();
lay.add(bild,new Integer(-30001));
lay.setLayer(bild,-31001);
getRootPane().setOpaque(true);
((JComponent) this.getContentPane()).setOpaque(false);

//Exit Button einfügen
ExitButton exitb = new ExitButton();
add(exitb);

Credits_Button cb = new Credits_Button();
add(cb);

//Ueberschrift einfügen
Ueberschrift ueberschrift = new Ueberschrift();
getContentPane().add(ueberschrift);


setSize(1035, 684);
}
public static void main(String[] args) {
// TODO Auto-generated method stub


Main m = new Main();
m.show();

}
}

So jetzt will ich über den Button Credits das aktuelle Frame überschreiben was bisher aber nur funktioniert indem Eclipse ein neues Frame darstellt.

import javax.swing.*;

import java.awt.*;

import Main.Ueberschrift;
import Main.Main;

public class Credits extends JFrame {

public Credits(){
super();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//Hintergrund Bild laden
ImageIcon icon = new ImageIcon(Main.class.getResource("../main_bild.jpg"));
JLabel bild = new JLabel(icon);
bild.setSize(icon.getIconWidth(),icon.getIconHeight());

//Hintergrund setzen und ContentPane durchsichtig machen
JLayeredPane lay = this.getLayeredPane();
lay.add(bild,new Integer(-30001));
lay.setLayer(bild,-31001);
getRootPane().setOpaque(true);
((JComponent) this.getContentPane()).setOpaque(false);

//Ueberschrift
Ueberschrift ueberschrift = new Ueberschrift();
getContentPane().add(ueberschrift);


setSize(1035, 684);
}

public static void main(String[] args){
Credits c = new Credits();
c.show();
}
}

/*Credits Button Klasse noch:*/

public class Credits_Button extends JButton{

public Credits_Button(){
super("Credits");

//Formatierung
setFont(new Font("Arial", Font.BOLD, 18));
setSize(400,50);
setLocation(550,500);
setOpaque(false);


//Aktion
ActionListener al = new ActionListener(){
public void actionPerformed(ActionEvent e){
Credits c = new Credits();
c.show();

}
};
addActionListener(al);


}
}


Wie funktioniert das, dass ich z.B. das Frame der Main überschreibe mit dem Credits Frame oder das Frame der Main schließe.

Hoffe ihr könnt mir weiter helfen
 
Naja, das Frame der Main schließen geht einfach für .setVisible(false).

Aber das ganze Frame einfach so "überschreiben"? Weiß nicht, was genau du damit meinst. Wäre doch im Prinzip einfacher statt von JFrame von JPanel zu erben und dann einfach das JPanel als einzigen Inhalt des (einzigen) Frames zu nehmen. Vorteil wäre halt, dass man das JPanel auf Knopfdruck aus dem Frame löschen und durch das andere ersetzen kann.
 
Zurück