2017-02-04 3 views
0

Je suis relativement nouveau à la programmation Java et est un code ici où il devrait dessiner une image de fond:backgroundImage est nul au lieu de l'image

public class Board extends JPanel{ 
private static final long serialVersionUID = 4759318639631503071L; 
public String room = "menu"; 
public Image backgroundImage; 

public Image getBackgroundImage() throws IOException{ 
    if (room == "menu") { 
     backgroundImage = ImageIO.read(new File("assets/background_title.png")); 
    } 
    return backgroundImage; 
} 

@Override 
public void paintComponent(Graphics g) { 
    super.paintComponent(g); 
    g.drawImage(backgroundImage, 0, 0, this); 
} 
} 

je System.out.println et réalisé que backgroundImage était nulle , qu'ai-je fait de mal ici?

+0

L'autre question est, où est actif en relation avec le contenu d'exécution? – MadProgrammer

Répondre

0

Vous avez utilisé == pour comparer des chaînes

Utilisez if (room.equals("menu"))

au lieu de

if (room == "menu") 
0

En Java, vous devez comparer des objets String en utilisant la méthode equals(), étant donné que les contrôles d'opérateur == si deux les références pointent exactement sur le même objet.

Alors:

if(room.equals("menu")) { ... } 
+0

il renvoie toujours null, peut-être qu'il y a quelque chose de mal avec la méthode de peinture? –

+0

Et où l'appelez-vous 'getBackgroundImage()'? L'appelez-vous du tout et êtes-vous sûr qu'il est appelé avant que 'JPanel' appelle ceci' paintComponent() '? – Porcupine