我正在寻找一个小任务的解决方案
我正在使用SWT
我有一个Combo课程:
public class ComboBoxComponent<T> extends Combo {
private ComboViewer comboListViewer;
public ComboBoxComponent(Composite composite, int i) {
super(composite, i);
comboListViewer = new ComboViewer(this);
setVisibleItemCount(15);
comboListViewer.setContentProvider(new org.eclipse.jface.viewers.ArrayContentProvider());
comboListViewer.setLabelProvider(new LabelProvider());
}
public void setDataModelList(T defaultObject, Collection<T> obj) {
Collection<T> defaultCollection = new LinkedHashSet<T>();
if (defaultObject != null)
defaultCollection.add(defaultObject);
defaultCollection.addAll(obj);
comboListViewer.setInput(defaultCollection);
select(0);
notifySelection();
}
public void notifySelection() {
Event event = new Event();
event.type = SWT.Selection;
event.widget = this;
event.display = getDisplay();
event.time = (int) new Date().getTime();
this.notifyListeners(SWT.Selection, event);
}
@Override
protected void checkSubclass() {
}
}
我想禁用在组合中选择一些项目,我该怎么办?
答案 0 :(得分:1)
使用SWT,禁用ComboBox无法使用的项目,您可以删除它们。你可以使用Swing的JComboBox来禁用项目。
您可以桥接Swing组件,创建一个SWT_AWT框架和一个像这样的AWT面板
java.awt.Frame frame = SWT_AWT.new_Frame();
java.awt.Panel panel = new java.awt.Panel(new java.awt.BorderLayout());
然后将Swing JComboBox添加到面板中。
panel.add(jComboBox);
这是一个将Swing嵌入SWT的教程
http://www.java2s.com/Tutorial/Java/0280__SWT/EmbededSwingAWTcomponentstoSWT.htm
答案 1 :(得分:0)
首先不要将项目放入组合列表中来禁用项目。如果他们不可选择,他们为什么要在那里?
使用存储类(例如ArrayList
)来保存数据,然后通过循环将输入元素输入到组合列表中,同时排除那些不需要的元素。
您可以随时使用combo.remove(int start, in end);
删除已添加到组合列表中的特定位置的商品。
此外,您可以防止该项目在被选中后被使用。您可以通过检查它的名称或索引号来执行此操作,然后防止它在某处使用,同时提示用户(如果这是您正在使用的逻辑)是一个好主意。