2017-04-11 3 views
0

Ist dies der richtige Weg, um ein ImageIcon zu einem JLabel hinzuzufügen? Es scheint nicht zu funktionieren, wenn ich die zweite Methode anrufe. Welchen Typ sollte addCarIcon() sein?Hinzufügen von ImageIcon zu einem JLabel?

//return JLabel that is null 
     JLabel findEmptySpace() 
     { 

      return parkingSpace[emptySpaceNo()]; 
     } 

     //set icon JLabel 
     void addCarIcon() 
     { 
      ImageIcon carIcon = new ImageIcon("car.png"); 
      findEmptySpace().setIcon(carIcon); 
     } 
+0

Das JLabel ist nicht null, es enthält nur keine ImageIcon. Es wird zurückgegeben, sodass ein ImageIcon in addCarIcon() auf es gesetzt werden kann. Das ParkingSpace JLabel wurde bereits zum JPanel hinzugefügt und ist sichtbar. – Nebula

Antwort

0
//return JLabel that is null 
JLabel findEmptySpace() 
{ 
    return parkingSpace[emptySpaceNo()]; 
} 

//set icon JLabel 
void addCarIcon() 
{ 
    // ImageIcon carIcon = new ImageIcon("car.png"); 
    ImageIcon carIcon = new ImageIcon(getClass().getResource("car.png"), null); 
    findEmptySpace().setIcon(carIcon); 
} 

Ich empfehle nicht ImageIcon (String filename) Konstruktion im Falle eines Problems zu verwenden, je nach Datei Pakaging. Es könnte funktionieren, wenn Sie es aus der IDE ausführen, und nicht funktionieren, wenn Sie es aus Runnable JAR ausführen.

P.S. Vor einiger Zeit habe ich IconManager utils erstellt, um Ico-Dateien anstelle von png-Dateien zu verwenden. Sie können es testen, vielleicht könnte es für Sie nützlich sein. (Dies ist ein Link zu GitHub: https://github.com/oleg-cherednik/IconManager)