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
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