String als Name eines Icon Objektes verwenden


#1
Hallo,

ich habe das Problem, dass die Methode "setIcon" eine Instanz vom Typ Icon erwartet, ich den Namen des Icons aus switch-case jedoch als String zurückgeben lasse(n muss).

Gibt es eine Möglichkeit, den String bspw. innerhalb von "setIcon" nach Icon umzuwandeln?
Wenn nicht. Wie könnte ich es ggf. lösen?

Danke.

Grüße.

Java:
 //Es handelt sich um ein Würfelspiel mit 5 Würfeln und nun sollen statt der Zahlenwerte für jeden der 5 Würfel
//Biilder des Würfels ausgegeben werden - (zuvor war das Programm vollständig lauffähig!)
   
// die Icon Objekte werden vorab in der Klasse mit der enspr. Grafikdatei instanziert
    Icon iconAugen1 = new ImageIcon("cube1.png");
    Icon iconAugen2 = new ImageIcon("cube2.png");
    Icon iconAugen3 = new ImageIcon("cube3.png");
    Icon iconAugen4 = new ImageIcon("cube4.png");
    Icon iconAugen5 = new ImageIcon("cube5.png");
    Icon iconAugen6 = new ImageIcon("cube6.png");

// .....................
//......................
//......................

// An dieser Stelle (im ActionPerformed-Event) werden die Werte aus dem Ergebnisfeld 
// meiner Methode "switchCube" (unten) übergeben und sollen als Icon dem entspr. Label zugewiesen werden.
// Dabei kommt es zu dem Fehler, dass ein String nicht an "setIcon" übergeben werden kann, da sie ein
// "Icon" benötigt

               this.lblPunkteSpieler_W1.setIcon(switchCube(int_punkteSpieler[0]));
               this.lblPunkteSpieler_W2.setIcon(switchCube(int_punkteSpieler[1]));
               this.lblPunkteSpieler_W3.setIcon(switchCube(int_punkteSpieler[2]));
               this.lblPunkteSpieler_W4.setIcon(switchCube(int_punkteSpieler[3]));
               this.lblPunkteSpieler_W5.setIcon(switchCube(int_punkteSpieler[4]));


// .....................
//......................
//......................


// In dieser Methode soll ermittelt werden, welches Bild für den entspr. Wert in "getIcon" genutzt wird

public String switchCube(int cube){
        
        String chooseCube = "";
        
        switch(cube){
        
            case 1: chooseCube = "iconAugen1";
            case 2: chooseCube = "iconAugen2";
            case 3: chooseCube = "iconAugen3";
            case 4: chooseCube = "iconAugen4";
            case 5: chooseCube = "iconAugen5";
            case 6: chooseCube = "iconAugen6";
            
        }
        
        return chooseCube;
    
    }
 
Zuletzt bearbeitet:
#2
Ich glaube das wir hier etwas Code benötigen um dir helfen zu können.
Es wäre glaube ich auch einfacher wenn du ImageIcon verwenden würdest da du diesem im Konstruktor auch eine URL übergeben kannst.

btw : Willkommen im Tutorials.de-Forum
 
#4
Moin,

die Methode "setIcon" erwartet nun einmal ein Icon-Objekt und nicht irgendeinen beliebigen String !!

Versuch es mal so :
Java:
public Icon switchCube( int cube )
{
    switch( cube )
    {
        case 1: return iconAugen1;    // hier einfach die entsprechende Icon-Datei zurückgeben
        case 2: return iconAugen2;
        case 3: return iconAugen3;
        case 4: return iconAugen4;
        case 5: return iconAugen5;
        case 6: return iconAugen6;
    }
}
Ist ungetestet !!

Gruß
Klaus

EDIT: Code korrigiert !!
 
Zuletzt bearbeitet:
Gefällt mir: Bill
#5
Verwendet bitte JAVA-Code-Tags *siehe meine Signatur* ... das Syntax-Highlightning erhöt die Lesbarkeit.

@vfl
Du solltest das eigentlich dank dem "dezenten roten Hinweis" vom java-forum.org kennen *in dessen Anlehnung auch ich meine Signatur gestaltet habe*.
 

Neue Beiträge