2017-08-23 3 views
0

Ich mache ein Eclipse Plugin mit einem Form MultiPage Editor.SWT Eclipse Combo Event

Auf einer der Seiten habe ich die Seite in zwei Hälften geteilt und erzeuge die Seiten in zwei verschiedenen Klassen. In der FormPage im Hinzufügen dieser beiden Hälften und alles ist in Ordnung.

Jetzt zu meinem Problem: Auf jeder Seite habe ich eine Combo-Box, die auf READ_ONLY gesetzt ist. Das Problem besteht darin, dass die Items der zweiten Combo vom ausgewählten Item aus der ersten Combo abhängig sind.

Kleiner Mockup meines Code:

//something 

new FirstHalf(Stuff); 

new SecondHalf(OtherStuff); 

---------- 
public int firstComboIndex = 0; 

public FirstHalf(Stuff){ 

    Combo firstCombo = new Combo(SomeClient, SWT.READ_ONLY); 

    String[] itemsArray = new String[stuff]; 

    firstCombo.setItems(itemsArray); 

    firstCombo.setText(itemsArray[firstComboIndex]); 

} 

---------- 
public int secondComboIndex = 0; 

public SecondHalf(Stuff){ 

    Combo secondCombo = new Combo(SomeOtherClient, SWT.READ_ONLY); 

    String[] array1 = new String[stuff]; 
    String[] array2 = new String[stuff]; 
    String[] array3 = new String[stuff]; 

    String[][] arrays = { array1, array2, array3}; 

    String[] secondItemsArray = new String[arrays[firstComboIndex]; 

    secondCombo.setItems(secondItemsArray); 

    secondCombo.setText(secondItemsArray[secondComboIndex]); 

} 

Nun, wie kann ich tun, es so, dass, wenn überhaupt die erste Combo Wahl geändert wird. Die zweite ändert sich auch.

+0

Try 'SelectionListener' ... –

Antwort

2

Verwenden Sie einfach einen Auswahllistener auf der ersten Combo setItems auf der zweiten.

Zum Beispiel:

Combo firstCombo = new Combo(parent, SWT.READ_ONLY); 

String[] itemsArray = {"1", "2", "3"}; 

firstCombo.setItems(itemsArray); 

firstCombo.select(0); 

Combo secondCombo = new Combo(parent, SWT.READ_ONLY); 

String[] array1 = {"1a", "1b"}; 
String[] array2 = {"2a", "2b"}; 
String[] array3 = {"3a", "3b"}; 

String[][] arrays = {array1, array2, array3}; 

secondCombo.setItems(arrays[0]); 

secondCombo.select(0); 

// Selection listener to change second combo 

firstCombo.addSelectionListener(new SelectionAdapter() 
    { 
    @Override 
    public void widgetSelected(final SelectionEvent event) 
    { 
     int index = firstCombo.getSelectionIndex(); 

     secondCombo.setItems(arrays[index]); 

     secondCombo.select(0); 
    } 
    }); 
Verwandte Themen