Komponenten in Schleife ansprechen

MU5T4NG

Mitglied
Hallo,

ich habe in meinem Projekt mehrere Labels, die alle nach dem gleichen Schema benannt sind: label1, label2, label3, label4...

Wie kann ich die Labels in einer Schleife ansprechen bzw. auswählen? Ich stelle mir das in etwa so vor:

Java:
for(int i=0; i<=value, i++){
    getComponentByName("label"+i).doSomething();
}

Gibts da was in Java? Ich weiß, ich sowas schonmal benutzt habe, glaube aber das war C#.
 

kirax

Bekanntes Mitglied
Was hälst du von einem Array?
Java:
JLabel labels[] = new JLabel[n];
...
for (JLabel l : labels) {
  l.doSomething();
}
 

BigBiber89

Mitglied
Wenn du die Komponenten doch mit Namen ansprechen willst könnte evtl eine Map helfen:

Java:
Map<String, JLabel> labels = new HashMap<String, JLabel>();
labels.put("label1", new JLabel("Test");
JLabel label = labels.get("label1");
 

MU5T4NG

Mitglied
Also mit dem Array das hab ich auch schon versucht. Aber sowohl beim Array, als auch beim der Map muss ich ja dann immer mit neuen Labels arbeiten, oder?
Weil "new JLabel("Test")" erstellt mir ja ein neues Label. Ich habe aber die Labels schon alle fertig auf der Form samt ImageIcon, festgelegter Größe und Position.

Oder kann das ich in der Map auch so angeben:
Java:
labels.put("label1", this.label1);
?
 

MU5T4NG

Mitglied
OK, dann werde ich das bei nächster Gelegenheit mal ausprobieren. :D

Ist zwar nicht so komfortabel wie meine Wunschfunktion "getComponentByName()", aber solange sie den Zweck erfüllt....

Danke erstmal. ;)
 

MU5T4NG

Mitglied
Ich wollte nur mitteilen, dass es genau so funktionert, wie ich es mir vorgestellt habe. :)

Ich habe mir jetzt eine "interaktive Sternchenbewertung" wie bei Amazon gebastelt (mit 5 Sternen, keine halben). Beim Überfahren mit der Maus werden nur soviele Sterne angezeigt, wie die Maus fokussiert. Beim Verlassen der Sterne werden so viele Sterne angezeigt, wie ausgewählt wurden.

Und damit ich nicht bei allen 5 Label-ImageIcons den gleichen Code schreiben muss, hab ich das in zwei Methoden gepackt, die dann von den jeweiligen Label-MouseEvents aufgerufen werden. ;)

Java:
// Map-Variable deklarieren
    private Map<String, javax.swing.JLabel> labels = new HashMap<String, javax.swing.JLabel>();

// Konstruktor füllt Map
    public NewRatingDialog(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        initComponents();
   
        labels.put("star1", star1);
        labels.put("star2", star2);
        labels.put("star3", star3);
        labels.put("star4", star4);
        labels.put("star5", star5);
    }

// Sterne bei Mausfokus ändern
    private void starEntered(int starFocused){
        for(int i=1; i<=5; i++){
            JLabel star = labels.get("star"+i);
            if(i <= starFocused){
                star.setIcon(starFull);
            }
            else{
                star.setIcon(starEmpty);
            }
        }
    }

// beim Verlassen der Sterne die gewählte Anzahl anzeigen
    private void starExited(){
        for(int i=1; i<=5; i++){
            JLabel star = labels.get("star"+i);
            if(i <= selectedStars){
                star.setIcon(starFull);
            }
            else{
                star.setIcon(starEmpty);
            }
        }
    }
 
Zuletzt bearbeitet:

Volvagia

Top Contributor
Dabei wäre eine Array aber schon sinnvoller, da du ja nur IDs von 0 - 4 hast. Oder wenigstens die Key/Values Int/JLabel
 
Zuletzt bearbeitet:

MU5T4NG

Mitglied
Ja, stimmt. Funktioniert auch mit einem Array prima. Obwohl ich erst ein Problem hatte, weil ich das Array so füllen wollte:
Java:
labels[0].add(this.star1);
Das gab aber immer eine NullPointerException.

Aber so gehts:
Java:
labels[0] = this.star1;

Da lässt sich dann auch recht einfach auf die einzelnen Labels zugreifen:
Java:
labels[i].setIcon(starFull);
 
F

Firephoenix

Gast
Ja, stimmt. Funktioniert auch mit einem Array prima. Obwohl ich erst ein Problem hatte, weil ich das Array so füllen wollte:
Java:
labels[0].add(this.star1);
Das gab aber immer eine NullPointerException.

Aber so gehts:
Java:
labels[0] = this.star1;

Da lässt sich dann auch recht einfach auf die einzelnen Labels zugreifen:
Java:
labels[i].setIcon(starFull);

Hi,
das mit dem Array-Zugriff war auch das was dir am Anfang gesagt wurde :D
evtl mal in der Insel das Array-Kapitel anschauen, und wenn du schon nach add-Methoden suchst am besten auch gleich mal in der Java-Api die ArrayList ;)
du musst um das Array zu befüllen die Variablen nicht vorher erstellen, sondern wenn du z.b. 40 labels haben willst geht auch sowas:
Java:
ArrayList<JLabel> labels = new ArrayList<JLabel>();
for(int i = 0; i < 40; i++){
labels.add(new JLabel());
}
Und wenn die dann halt mit dem Bild z.b. in ein Panel (hier einfach mal panel genannt) sollen (z.b. mit nem grid), dann halt so verwenden:
Java:
panel.setLayout(new GridLayout(10,4);
for(int i = 0; i < labels.size(); i++){
panel.add(labels.get(i));
}
(Code ungetestet und einfach hier in die Tags getippt, sollte von der Struktur her aber so passen :))
Gruß

Edit:
@Volvagia, doch da fliegt ne NPE ^^ aber nicht weil er in das Array nicht adden kann, sondern weil das Array vom typ Label bzw JLabel ist und die erben eine .add() von Container, daher kann er die Methode darauf aufrufen ;) (lustiger Fehler ^^).
Die NPE fliegt dann logischerweise weil kein Label da ist :D
 
Zuletzt bearbeitet von einem Moderator:
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Komponenten, Module, Begrifferklärung Java Basics - Anfänger-Themen 4
W Intuitive interface für Komponenten Java Basics - Anfänger-Themen 4
danieldemetry Java - Graph Komponenten - Ausgabe Java Basics - Anfänger-Themen 0
C Einbinden von Komponenten mit Maven Java Basics - Anfänger-Themen 3
V Alle Komponenten eines JPanels Java Basics - Anfänger-Themen 14
T Optionale Komponenten Java Basics - Anfänger-Themen 8
M GUI- mehrere Komponenten auf Container adden Java Basics - Anfänger-Themen 2
P JavaFX - Komponenten skalieren Java Basics - Anfänger-Themen 16
J Klassen Hilfe bei unbekannten Zeilen bzgl. Klassen / Komponenten Java Basics - Anfänger-Themen 12
I komponenten werden in JFrame nicht richtig angezeigt Java Basics - Anfänger-Themen 1
F Swing Applet: mehrere Komponenten hinzufügen Java Basics - Anfänger-Themen 1
F Platzieren von Komponenten in Swing Applet funktioniert nicht Java Basics - Anfänger-Themen 3
D JFrame, Komponenten verschmiert. Java Basics - Anfänger-Themen 15
N JTable - Zellfarben ändern, GUI-Komponenten in Zellen einfügen Java Basics - Anfänger-Themen 5
M Komponenten irgendwo versteckt? Java Basics - Anfänger-Themen 7
O swing komponenten werden nicht angezeigt Java Basics - Anfänger-Themen 6
B Tabelle, Größe der Komponenten Java Basics - Anfänger-Themen 2
D Wie genau kann ich in Java Komponenten entwickeln? Java Basics - Anfänger-Themen 6
P Scrollpane mit dynamisch erzeugten Komponenten Java Basics - Anfänger-Themen 3
M Fixe Position von GUI Komponenten ? Java Basics - Anfänger-Themen 9
Weiti Anzeige von komponenten erst bei Mouse-Over Java Basics - Anfänger-Themen 3
N Anordnug der Komponenten mit NetBeans Java Basics - Anfänger-Themen 9
M Obsolete Komponenten feststellen? Java Basics - Anfänger-Themen 3
X GridBagLayout Komponenten Anordnungsproblem Java Basics - Anfänger-Themen 4
L Komponenten in Layoutmanagern zentrieren Java Basics - Anfänger-Themen 5
J Probleme mit Visual Editor Komponenten auf Panel legen Java Basics - Anfänger-Themen 4
J Komponenten andordnen Java Basics - Anfänger-Themen 2
K Koordinaten von Swing Komponenten Java Basics - Anfänger-Themen 2
G Komponenten Java Basics - Anfänger-Themen 2
A Komponenten nur sporadisch sichtbar beim starten Java Basics - Anfänger-Themen 2
I Swing-Komponenten-Größe im GridBagLayout beschränken Java Basics - Anfänger-Themen 2
N GridBagLayout: gleichmäßige verteilung von Komponenten Java Basics - Anfänger-Themen 23
S Auf JButtonBar komponenten ausrichten, größe festlegen? Java Basics - Anfänger-Themen 5
S Wie komponenten positionieren? Java Basics - Anfänger-Themen 6
B Komponenten im LayoutManager zentrieren Java Basics - Anfänger-Themen 5
G Seit Java6 wird der Text von komponenten komisch dargestellt Java Basics - Anfänger-Themen 11
Q Beste Komponenten für 3-Schichten-Architektur gesucht Java Basics - Anfänger-Themen 7
T Anderes Fenster öffnen, darin enthaltene Komponenten ändern Java Basics - Anfänger-Themen 2
E Komponenten auf Panel positionieren Java Basics - Anfänger-Themen 3
S Komponenten löschen und ersetzen Java Basics - Anfänger-Themen 2
S Kommunikation zwischen Komponenten in einem JFrame Java Basics - Anfänger-Themen 10
P Abstand vom Rahmen zu Komponenten bestimmen? Java Basics - Anfänger-Themen 3
J Dynamische Größenveränderung der Komponenten verhindern Java Basics - Anfänger-Themen 8
S Alle Komponenten die ich auf die IDE ziehe sind align all Java Basics - Anfänger-Themen 7
B Komponenten einer Zeile, Spalte des GridLayouts hinzufügen Java Basics - Anfänger-Themen 3
M value von Komponenten erhalten Java Basics - Anfänger-Themen 3
G GUI Komponenten Java Basics - Anfänger-Themen 14
M Problem beim ändern von Komponenten während Visible(true) Java Basics - Anfänger-Themen 4
M Bei Swing Komponenten die Farbe ändern? Java Basics - Anfänger-Themen 12
S Benennung von Komponenten bei Swing? Java Basics - Anfänger-Themen 8
J von Methode auf GUI-Komponenten zugreifen? Java Basics - Anfänger-Themen 5
J Problem mit Swing-Komponenten Java Basics - Anfänger-Themen 13
G Visuellen Komponenten Hints zuordnen Java Basics - Anfänger-Themen 5
G Komponenten dynamisch auf contentPane einbinden Java Basics - Anfänger-Themen 5
M wie kombiniere ich grafik und swing-komponenten Java Basics - Anfänger-Themen 16
X Komponenten automatisch erzeugen Java Basics - Anfänger-Themen 8
X Viele Komponenten automatisch erzeugen Java Basics - Anfänger-Themen 2
sambalmueslie Probleme mit Container und Komponenten. Java Basics - Anfänger-Themen 3
A Komponenten im Panel ausrichten Java Basics - Anfänger-Themen 5
M GridBagLayout und enthaltende komponenten Java Basics - Anfänger-Themen 5
G alle Komponenten vom Typ JPanel removen Java Basics - Anfänger-Themen 4
K Sichtbarkeit von Komponenten prüfen Java Basics - Anfänger-Themen 5
R Best Practice Problem mit (einfacher) Doppelt-Schleife Java Basics - Anfänger-Themen 53
C Abbruch einer Schleife mit break, meine Übung funktioniert nicht richtig Java Basics - Anfänger-Themen 4
C Erste Schritte While-Schleife Java Basics - Anfänger-Themen 3
M While-Schleife mit Wartezeit Java Basics - Anfänger-Themen 15
T Ich brauche eine Schleife die eine beliebige Zahl so lange durch 10 teilt bis zur Null Java Basics - Anfänger-Themen 5
DrahtEck Schleife soll wieder da anfangen wo ich es möchte ! Java Basics - Anfänger-Themen 17
Finn_lol Fehlermeldung bei Schleife mit Array Java Basics - Anfänger-Themen 4
Ranger229 Endless loop in while Schleife Java Basics - Anfänger-Themen 3
MaZ Quadrat Schleife(Pyramide) Java Basics - Anfänger-Themen 9
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
P Wie kann diese Schleife beenden Java Basics - Anfänger-Themen 1
T float soll durch schleife die größte mögliche Zahl herausfinden, Ausgabe ist aber "Infinity" Java Basics - Anfänger-Themen 1
T Variable in Schleife deklarieren, Speicherplatz, Garbage Collector Java Basics - Anfänger-Themen 10
Ostkreuz While Schleife neustarten Java Basics - Anfänger-Themen 20
S Verschachtelte for-Schleife Java Basics - Anfänger-Themen 2
M Problem bei verschachtelter for-Schleife bei zweidimensionalen Arrays Java Basics - Anfänger-Themen 3
laxla123 Verschachtelte If-Else Schleife Java Basics - Anfänger-Themen 21
S Erste Schritte do-while Schleife Münzwurf Java Basics - Anfänger-Themen 1
S while Schleife Taschenrechner Java Basics - Anfänger-Themen 1
P Best Practice While loop schleife Java Basics - Anfänger-Themen 5
ohneInformatik; For Schleife. Was macht dieser Code?? Java Basics - Anfänger-Themen 5
I For Schleife Summe berechnen Java Basics - Anfänger-Themen 13
A Erste Schritte Aufgabe mit while Schleife Java Basics - Anfänger-Themen 11
R do while Schleife Verständnisfrage Java Basics - Anfänger-Themen 2
Say Fehlenden Code finden in einer while-Schleife? Java Basics - Anfänger-Themen 11
N Warum Springt iterator nur in der Schleife weiter Java Basics - Anfänger-Themen 9
J for Schleife kleinste Zufallszahl finden Java Basics - Anfänger-Themen 25
A Return in While Schleife Java Basics - Anfänger-Themen 6
M Erste Schritte While Schleife / Ausgabe von buchstabe & ASCII Wert Java Basics - Anfänger-Themen 4
J do..while Schleife Java Basics - Anfänger-Themen 14
J Java To String Methode, Array mit For-Schleife Java Basics - Anfänger-Themen 2
S Textausgabe in einer For-Schleife Java Basics - Anfänger-Themen 12
B Automatisierte Ausgabe (Schleife, If-Abfrage?) Java Basics - Anfänger-Themen 24
C 2D Array Ausgabe mit for-Schleife i,j Java Basics - Anfänger-Themen 4
T Mit jedem Wert in der for-Schleife weiter arbeiten Java Basics - Anfänger-Themen 3
berserkerdq2 Warum muss man manchmal in der RUnmethode sleep in eine schleife tun? Java Basics - Anfänger-Themen 9
F for-Schleife halbiert Durchläufe ungewollt Java Basics - Anfänger-Themen 6
ravenz Schleife mit for über String Array „zahlen“und prüfen ob Wert „a“ oder „b“ oder „c“ entspricht (mittels || ) Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben