Grundsätzlich ist mein Problem, dass wenn ich mit Graphics auf einem JFrame arbeite, die zu zeichnenden Dinge nicht beim erstellen des JFrames gezeichnet werden, sondern erst wenn ich per Mausklick die Größe des JFrames verändere.
In diesem Fall möchte ich einem JFrame ein Hintergrundbild geben.
Das Bild soll nach Möglichkeit über ein ImageComponent Objekt erstellt werden.
Die Methode paintComponent wird leider erst aufgerufen, wenn ich das erstellte JFrame per Mausklick verändere.
Es wäre super wenn mir jemand helfen könnte
In diesem Fall möchte ich einem JFrame ein Hintergrundbild geben.
Java:
public class GUI extends JFrame{
private JMenuBar menuBar;
private JMenuItem beenden;
private ImageComponent background;
public GUI(){
//JFrame erzeugen
this.getContentPane().setLayout(null);
this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
this.setBackground(new Color(0,0,0));
this.setSize(1000,740);
//In der Mitte des Bildschirms platzieren
this.setLocation((Toolkit.getDefaultToolkit().getScreenSize().width-
this.getSize().width) / 2,
(Toolkit.getDefaultToolkit().getScreenSize().height-
this.getSize().height) / 2);
init();
this.setVisible(true);
}
public void init(){
menuBar = new JMenuBar();
menuBar.setBackground(Color.black);
beenden = new JMenuItem("Beenden");
menuBar.add(new JMenu("Datei")).add(beenden);
this.setJMenuBar(menuBar);
background = new ImageComponent("Hintergrund.png");
background.setBounds(0, 0, 1000, 700);
background.setVisible(true);
this.add(background);
Das Bild soll nach Möglichkeit über ein ImageComponent Objekt erstellt werden.
Java:
public class ImageComponent extends JComponent {
private Image image;
public ImageComponent(String path){
image = Toolkit.getDefaultToolkit().getImage(path);
}
public ImageComponent(File file){
image = Toolkit.getDefaultToolkit().getImage(file.getAbsolutePath());
}
@Override
public void paintComponent( Graphics g ){
if ( image != null )
g.drawImage( image, 0, 0, null );
}
}
Die Methode paintComponent wird leider erst aufgerufen, wenn ich das erstellte JFrame per Mausklick verändere.
Es wäre super wenn mir jemand helfen könnte