Hallo,
ich komme leider mit einigen Dingen hinsichtlich swt überhaupt nicht zurecht und hoffe, dass ihr mir helfen könnt.
Hintergrund
Ich lese aus einem xml-File eine beliebige Menge an Daten aus und speichere mir diese in einem Objekt "object"ab. Der Zugriff auf die Elemente erfolgt dann über eine for-Schleife. Das funktioniert soweit auch. Nun sollen diese Daten in einer GUI untergebracht werden nach dem Schema:
Nach Eingabe von Wert2 wird der Button angeklickt und der Wert wird für dieses Element gespeichert und man sieht diesen Wert auch in der GUI. Das funktioniert soweit auch alles.
Problem 1
Jetzt kann es aber vorkommen, dass sich Elemente nur in Wert1 unterscheiden und der eingegebene Wert2 für alle mit der gleichen Bezeichnung gelten sollten. Hierfür möchte ich einen separaten Button einrichten. Aber das funktioniert nicht, er wird einfach nicht angezeigt. Wo ist mein Fehler?
Problem 2
Wenn dieser zweite Button integriert ist, wird nach Ausführen der Funktion für mehrere Elemente der Wert2 in "object" geändert. Wie bekomme ich es nun hin, dass diese Werte auch in der GUI auftauchen? Beim Stöbern im Internet habe ich nichts wirklich hilfreiches gefunden, um die GUI entsprechend zu refreshen o.ä.
Hier ein Bild dazu:
Hier ist der Quellcode:
ich komme leider mit einigen Dingen hinsichtlich swt überhaupt nicht zurecht und hoffe, dass ihr mir helfen könnt.
Hintergrund
Ich lese aus einem xml-File eine beliebige Menge an Daten aus und speichere mir diese in einem Objekt "object"ab. Der Zugriff auf die Elemente erfolgt dann über eine for-Schleife. Das funktioniert soweit auch. Nun sollen diese Daten in einer GUI untergebracht werden nach dem Schema:
Code:
Element-Bezeichnung (nicht änderbar) - Wert1 (nicht änderbar) - Wert2 (änderbar, Standard ist "na") - Button
Problem 1
Jetzt kann es aber vorkommen, dass sich Elemente nur in Wert1 unterscheiden und der eingegebene Wert2 für alle mit der gleichen Bezeichnung gelten sollten. Hierfür möchte ich einen separaten Button einrichten. Aber das funktioniert nicht, er wird einfach nicht angezeigt. Wo ist mein Fehler?
Problem 2
Wenn dieser zweite Button integriert ist, wird nach Ausführen der Funktion für mehrere Elemente der Wert2 in "object" geändert. Wie bekomme ich es nun hin, dass diese Werte auch in der GUI auftauchen? Beim Stöbern im Internet habe ich nichts wirklich hilfreiches gefunden, um die GUI entsprechend zu refreshen o.ä.
Hier ein Bild dazu:
Hier ist der Quellcode:
Java:
public void createControl(Composite parent) {
int elementCounter = 0;
sc = new ScrolledComposite(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
container = new Composite(sc, SWT.NONE);
GridLayout layout = new GridLayout();
layout.numColumns = 4;
container.setLayout(layout);
GridData gd = new GridData(SWT.FILL, SWT.BEGINNING, true,false);
for (Elements elem : object.getElements()){
for (Element elem: elem.getElement())
{
elementCounter++;
final Element ecu2 = ecu;
CLabel label = new CLabel(container, SWT.NULL);
label.setText(elem.getName());
label.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, false,false));
CLabel label2 = new CLabel(container, SWT.NULL);
label2.setText(elem.getWert1());
label2.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, false,false));
final Text text = new Text(container, SWT.BORDER);
text.setLayoutData(new GridData(SWT.FILL, SWT.FILL,false, false));
text.setEditable(true);
text.setText(elem.getWert2());
text.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent e) {
// merke wert2
}
});
final Button button = new Button(container, 0);
button.setText("set");
button.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, false,false));
button.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
setWert2(object, bezeichnung, wert1, wert2);
}
});
}
}
Button button2 = new Button(parent, 0);
button2.setText("Set Wert2 for equal elements");
button2.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, false,false));
sc.setContent(container);
sc.setExpandHorizontal(true);
sc.setExpandVertical(true);
sc.setMinSize(container.computeSize(300, elementCounter*29));
setControl(sc);
}