Über hashmap JLabels ansteuern

Saufrang

Grünschnabel
Hallo,

ich hab folgendes Problem, ich lasse mir über:
Code:
                                     for(int i = 0; i < 176; i++) {
				JLabel label = new JLabel (""+(i+1));				
				getContentPane().add(label);
				label.setBorder(BorderFactory.createLineBorder(Color.green));
				label.setHorizontalAlignment(SwingConstants.CENTER);
				label.setBackground(new Color(0xFFFFFFFF));
				int rowsize = 16;					
				Rectangle r = new Rectangle((((i)%rowsize) * 30)+200,((i+16)/rowsize)*30,30,30);
				label.setBounds(r);

ein paar JLabels zeichnen. Via Button klick läuft dann eine Rechnung durch bei der am Ende ein Int-Wert herauskommt.
Für diesen Wert sollen dann entsprechende JLabels eingefärbt werden.
Also z.B. bei der Rechnung kommt 5 heraus dann sollen 5 JLabels eingefärbt werden

jetzt hab ich schon ein wenig in Foren geblättert und glaube das Hashmap das richtige dafür sein sollte,
ich weis nur nicht wie ich das umsetzten kann. könnte mir jemand ein Tipp geben ? :confused::confused:

danke schonmal! :D
 
Nimm besser ne ArrayList oder HashSet. Wenns nur darum geht so zuzugreifen das Set, wenns du direkten Feldzugriff brauchst die List.
In der Schleife immer mit add hinzufügen, bei der List mit get, beim Set per Iterator zugreifen.
 
Hier eine Möglichkeit, die du relativ simpel in dein Programm einbauen kannst:

Java:
import java.awt.Component;

import javax.swing.JFrame;
import javax.swing.JLabel;


public class Test extends JFrame {
	public Test() {
		for(int i = 0; i < 176; i++) {
			JLabel label = new JLabel();
			label.setName(String.valueOf(i));
			getContentPane().add(label);
		}
	}

	private JLabel getLabel(int nr) {
		Component[] components = getContentPane().getComponents();
		for(Component current : components) {
			if(current.getName().equals(String.valueOf(nr)))
				return (JLabel)current;
		}
		return null;
	}
	
}

Du gibts den Labels einen Namen entsprechend ihrer Nummer und ließt sie dann wie in der "getLabel:)int)" Methode über den Namen wieder aus.

Wesentlich weniger Rechenaufwand wäre natürlich gleich ein Array anzulegen, falls die Ahnzahl der JLabels bekannt ist. Die Zugriffe sind dann über das Array entsprechent simpel.
 
Zuletzt bearbeitet:
Zurück