Ich muss eine GUI erstellen, und ich möchte wirklich einen Hintergrund festlegen. Um dies zu tun, habe ich eine Klasse namens "Backround" erstellt, wo ich die paintComponent-Methode verwende. Ich gab ihm die Datei, die ich im Hintergrund einstellen wollte und es funktionierte.JPanel Speicherort Probleme
Hier ist mein Hintergrund Klasse:
public class Background extends JPanel
{
public void paintComponent(Graphics g)
{
try {
Image img = ImageIO.read(new File("./fond.jpg"));
g.drawImage(img, 0, 0, this.getWidth(), this.getHeight(), this);
}
catch (IOException e) {
e.printStackTrace();
}
}
}
Sobald jedoch das Bild auf dem Hintergrund ist, die Platten, die auf meinem Rahmen in der gleichen Position nicht mehr sind, waren und ich habe wirklich keine Ahnung, wie man behebe das und habe noch keine relevanten Themen dazu gefunden. Hier
ist ein Zitat aus meiner Klasse, wo ich beschreibe die GUI:
this.setContentPane(new Background());
this.setTitle("Arena");
this.setSize(800, 500);
this.setLocationRelativeTo(null);
//this.setLayout(new FlowLayout(FlowLayout.CENTER));
//this.setLayout(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
// ******************************************** PANEL 1 ******************************************
Panel P1 = new Panel();
this.add("NORTH", P1);
P1.setLayout(new FlowLayout());
P1.add(new Label ("Joueur 1"));
P1.add(new Label ("Action"));
P1.add(new Label ("Joueur 2"));
//P1.setVisible(true);
// ********************************************* PANEL 2 ******************************************
Panel P2 = new Panel();
P2.setLayout(new FlowLayout());
P2.add(Liste1);
// Boutons
Button B1 = new Button("FIGHT");
P2.add(B1);
Button B2 = new Button("HEAL");
P2.add(B2);
P2.add(Liste2);
this.add("WEST", P2);
// P2.setVisible(true);
Außerdem, wenn ich den Anruf zu meinem Hintergrund Konstruktor zu entfernen, werden die Platten wieder in ihre inital Standorten zu bekommen.
Ich hoffe, Sie könnten mir helfen oder mich umleiten!
Danke!
Antoine Sbert
Sie haben festgestellt haben, versucht, repaint() aufzurufen; und revalidate(); ? –
Ja, aber es scheint nichts zu ändern ... Ich werde es nochmal versuchen, um zu sehen, ob es repariert werden kann! – Sbert
Sie fügen WEST - NORTH hinzu, aber es hat kein Layout-Borderlayout - Sie müssen das löschen: Frame hat ein bestimmtes Layout, dann fügen Sie es hinzu – gpasch