Java 仅当SWT.READ_时如何重置组合

Java 仅当SWT.READ_时如何重置组合,java,eclipse-plugin,swt,Java,Eclipse Plugin,Swt,我正在使用org.eclipse.swt.widgets.Combo类,我正在执行以下操作 Combo myCombo = new Combo(container, SWT.READ_ONLY); myCombo.add("1"); myCombo.add("2"); //later on myCombo.setText(""); //will not work because READ_ONLY 用户将选择组合的一个元素,我提供了一个重置按钮,希望将值设置为null。但是,根据javado

我正在使用
org.eclipse.swt.widgets.Combo
类,我正在执行以下操作

Combo myCombo = new Combo(container, SWT.READ_ONLY);
myCombo.add("1");
myCombo.add("2");

//later on
myCombo.setText(""); //will not work because READ_ONLY
用户将选择组合的一个元素,我提供了一个重置按钮,希望将值设置为null。但是,根据javadoc,当接收器为只读时,setText方法被忽略。我喜欢将
组合设置为只读,因为我只希望用户选择我提供的内容。。但如果可能的话,我想将该值设置回null或“”。我可以用只读接收器的接收器来执行此操作吗?或者,还有什么好办法


谢谢

使用
组合。取消所有()
重置选择

或者,您可以使用:

combo.deselect( combo.getSelectionIndex() );
在这两种情况下,
getSelectionIndex()
将在之后返回-1


这些方法看起来好像组合支持多重选择,但它不支持。无论它们看起来多么奇怪,它们都会重置选择。

最好的方法是使用ComboViewer

    List<String> input = new ArrayList<String>();
    input.add("1");
    input.add("2");
    combo = new ComboViewer(container, SWT.READ_ONLY);
    combo.setLabelProvider(new LabelProvider());
    combo.setContentProvider(ArrayContentProvider.getInstance());
    combo.setInput(input);
问候

combo.setSelection(StructuredSelection.EMPTY);