Dynamisch jCheckBox

dodlhuat

Mitglied
Ich hätt folgende Frage: Ich hab eine Verbindung zur Datenbank in der verschiedene Kinosäle gespeichert sind (mit unterschiedlichen Reihen und Plätzen pro Reihe). Wenn ich mir jetzt die Reihen und Plätze auslese hätte ich gerne für jeden Platz eine CheckBox gezeichnet mit der man dann Plätze reservieren kann... gibt es da irgendwie eine Möglichkeit dynamisch CheckBoxen zu erstellen, oder bleibt mir nix anderes über als für jeden Saal eine eigene Oberfläche zu basteln die dann jeweils aufgerufen wird!?
Ich hätt mir überlegt da einfach eine Schleife zu machen, aber so lässt sich ja leider kein GUI Element erstellen weil ja die Namen unterschiedlich sein müssen.
Bin für jeden Tipp dankbar!
 
Natürlich kannst du die dynamisch erstellen.

Java:
public static void main(String[] args) {
	JFrame frame = new JFrame();

	final int rows = 10;
	final int cols = 5;

	frame.setLayout(new GridBagLayout());

	GridBagConstraints constr = new GridBagConstraints();

	for (int x = 0; x < rows; x++) {
		constr.gridx = x;
		for (int y = 0; y < cols; y++) {
			constr.gridy = y;
			frame.add(new JCheckBox(), constr);
		}
	}

	frame.setSize(300, 200);
	frame.setVisible(true);
}
 
Danke! Jetzt weiß ich wieder ein bißchen mehr!
Aber ich häng jetzt beim nächsten Schritt wieder, weil jetzt sind dann zwar die dynamisch gezeichneten CheckBoxen da, aber da die keine Bezeichnung haben kann ich sie am Schluss ja dann auch nicht überprüfen ob sie ausgewählt worden sind für die Registrierung, oder?
 
Zuletzt bearbeitet:
So, für alle die das vielleicht noch brauchen können... die Lösung war für mich mittels Cast das ganze zu machen:

Code:
comps = jPanel.getComponentCount();
for (int x = 0; x < comps; x++) {
JCheckBox box = (JCheckBox) jPanel.getComponent(x);
}
in der Schleife kann man dann mit x. auf alle Funktionen der CheckBox zugreifen
 
Wenn du aber noch andere Komponente auf deinem Panel hast bekommst du ne ClassCastException. Bitte prüfe vor einem Cast immer ob dieser erfolgreich sein wird.
Java:
comps = jPanel.getComponentCount();
for (int x = 0; x < comps; x++) {
    Component comp = jPanel.getComponent(x);
    if(comp instanceof JCheckBox){
        JCheckBox box = (JCheckBox) jPanel.getComponent(x);
    }
    else {
       System.err.println("Unknown Component: " + comp.getClass().getName());
    }
}

Schöner wäre es aber sowieso sich die Checkboxes in einer Liste o.ä. zu merken und dann darüber zu iterieren.
 
Zurück