Dynamische Buttons unter SWT?

Nekros

Grünschnabel
Also ich will aus einer Datei auslesen wie viele Buttons ich in einem Fenster generieren muss. Das ist nicht das Problem sondern wenn eich jetzt die Anzahl habe und in einer Schleife die Buttons generieren lasse kann ich dann auch außerhalb dieser Funktion auf die Eigenschaften zugreifen?

Falls nein könntet ihr mir ja eine Möglichkeit vorschlagen.
 
Hallo!

Leg die Buttons einfach in einer Liste ab und greif später über die Liste auf sie zu oder du erstellst die Buttons einfach so mit dem Container als Parent und greifst später über die Controlsauflistung drauf zu ... siehe Beispiel:

Code:
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

public class SWTButtonDemo {

	public static void main(String[] args) {
		Display display = new Display();
		Shell shell = new Shell(display);

		shell.setText("SWTButtonDemo");
		shell.setSize(320, 240);

		shell.setLayout(new RowLayout());
		int btnCnt = 5;
		for (int i = 0; i < btnCnt; i++) {
			Button b = new Button(shell, SWT.PUSH);
			b.setText("Button:" + i);
		}

		shell.open();
		
		Control[] ctls = shell.getChildren();
		for (int i = 0; i < ctls.length; i++) {
			Control c = ctls[i];
			if(c instanceof Button){
				System.out.println(((Button)c).getText());
			}
		}

		while (!shell.isDisposed())
			if (!display.readAndDispatch())
				display.sleep();
	}
}

Gruß Tom
 
Du kannst ja einfach ein Button-Array generieren, daß Du auf private setzt.

Also

Code:
// Programm Anfang
private Button[] buttons;

//dann wenn Du die Anzahl hast (am besten im Konstruktor, jedenfalls vor dem Zeitpunkt, //an dem Du später auf die buttons zugreifen willst):

buttons = new Button[anzahl];

//nun in der schleife initialisieren:
for (int i = 0; i<anzahl; i++) {
    buttons[i] = new Button().
    buttons[i].setText("button nr. " + i);
}

//und dann später irgendwo in Deinem Code kannst Du auf die buttons und deren //Methoden beliebig zugreifen mit

buttons[2].setText("Anderes Label"); // button 3 bekommt ein anderes label

Ich würde hier auch den JButton von Swing nehmen. Hat viel mehr Möglichkeiten.
 
Zurück