我正在使用Form MultiPage Editor进行Eclipse插件。
在其中一个页面上,我将页面分成两半,并在两个不同的类中生成页面。在FormPage中添加这两半,一切都很好。
现在我的问题:在每一方面我都有一个设置为READ_ONLY的组合框。问题是第二个组合的项目取决于第一个组合中的选定项目。
我的代码的小模型:
//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]);
}
现在我该怎么做呢,当第一个组合选择被改变时。第二个也发生了变化。
答案 0 :(得分:2)
只需在第一个组合上使用选择侦听器就可以在第二个组合上调用setItems
。
例如:
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);
}
});