Hallo erstmal :meld:
Ich hätte da ne Frage zum JFrame und JPanel, speziell zur repaint() und paintComponent()...
Und zwar habe ich ein JFrame mit einem JPanel Container drin. In dem JPanel is noch ein JButton etc...
Das JPanel zeichnet einen Hintergrund auf das Frame:
Jetzt möchte ich, dass wenn ich auf den JButton klicke, dass dann quasi ein neues Panel gezeichnet wird, so als würde man auf eine neue Seite verlinkt (von der Funktion her). Habs jetzt so, dass das JPanel aus dem Frame gelöscht wird und ein anderes JPanel hinzugefügt wird und sich dieses dann mit repaint neuzeichnen soll...Dazu hab ich das JFrame als ActionListener zum JButton hinzugefügt...
Wenn ich auf den Button klicke wird die Methode des JFrame aufgerufen
Leider funktioniert das nicht, da die Methode aus einer Instanz vom zu löschenden Panel aufgerufen wird, denke, dass es daran liegt. Die PaintComponent Methode vom neuen JPanel wird nicht mehr aufgerufen..
Hoffe ihr könnt mir helfen, oder einen besseren Vorschlag machen, denn so kann es nicht gehen...
Gruß
Ich hätte da ne Frage zum JFrame und JPanel, speziell zur repaint() und paintComponent()...
Und zwar habe ich ein JFrame mit einem JPanel Container drin. In dem JPanel is noch ein JButton etc...
Das JPanel zeichnet einen Hintergrund auf das Frame:
Java:
public void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
Image bg = new ImageIcon("bild.jpg").getImage();
g2d.drawImage(bg, 0, 0, this);
}
Jetzt möchte ich, dass wenn ich auf den JButton klicke, dass dann quasi ein neues Panel gezeichnet wird, so als würde man auf eine neue Seite verlinkt (von der Funktion her). Habs jetzt so, dass das JPanel aus dem Frame gelöscht wird und ein anderes JPanel hinzugefügt wird und sich dieses dann mit repaint neuzeichnen soll...Dazu hab ich das JFrame als ActionListener zum JButton hinzugefügt...
Wenn ich auf den Button klicke wird die Methode des JFrame aufgerufen
Java:
public void actionPerformed(ActionEvent e) {
getContentPane().add(chatwindow);
getContentPane().remove(chatpanel);
System.out.println(this.getContentPane().getComponentCount());
repaint();
}
Leider funktioniert das nicht, da die Methode aus einer Instanz vom zu löschenden Panel aufgerufen wird, denke, dass es daran liegt. Die PaintComponent Methode vom neuen JPanel wird nicht mehr aufgerufen..
Hoffe ihr könnt mir helfen, oder einen besseren Vorschlag machen, denn so kann es nicht gehen...
Gruß
Zuletzt bearbeitet von einem Moderator: