Java SWT组合禁用项
Java SWT组合禁用项,java,combobox,swt,Java,Combobox,Swt,我正在为一项小任务寻找解决方案。 我正在使用SWT。 我有一个组合类: public class ComboBoxComponent<T> extends Combo { private ComboViewer comboListViewer; public ComboBoxComponent(Composite composite, int i) { super(composite, i); comboListViewer = ne
我正在为一项小任务寻找解决方案。
我正在使用SWT。
我有一个组合类:
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() {
}
}
公共类ComboBoxComponent扩展了Combo{
私有ComboViewer comboListViewer;
公共ComboBoxComponent(复合,int i){
super(复合材料,i);
comboListViewer=新ComboViewer(此);
setVisibleItemCount(15);
comboListViewer.setContentProvider(新org.eclipse.jface.viewers.ArrayContentProvider());
setLabelProvider(新的LabelProvider());
}
公共void setDataModelList(T defaultObject,集合对象){
Collection defaultCollection=新建LinkedHashSet();
if(defaultObject!=null)
defaultCollection.add(defaultObject);
defaultCollection.addAll(obj);
comboListViewer.setInput(defaultCollection);
选择(0);
通知选择();
}
公共选择(){
事件=新事件();
event.type=SWT.Selection;
event.widget=this;
event.display=getDisplay();
event.time=(int)new Date().getTime();
this.notifyListeners(SWT.Selection,event);
}
@凌驾
受保护的void checkSubclass(){
}
}
我想禁用在组合框中选择某些项目的功能,我该怎么做?使用SWT,禁用项目组合框不可能,您可以删除它们。您可以使用Swing中的JComboBox来禁用项 您可以在创建SWT_AWT框架和AWT面板(如下所示)的Swing组件之间架桥
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的教程
首先不要将项目放入组合列表,以禁用项目。如果它们不可选择,为什么要在那里 使用存储类,例如
ArrayList
保存数据,然后通过循环将元素输入组合列表,同时排除不需要的元素
您可以始终使用combo.remove(int start,in end)
在将项目添加到组合列表后,删除特定位置的项目
此外,您可以防止在选择该项目后使用该项目。你可以通过检查它的名称或索引号来做到这一点,然后阻止它在某处被使用,同时提示用户(如果这是你使用的逻辑),这是一个好主意。根据哪些条件禁用项目?@JuanManuel like someClass.getId()=-1L,“还有什么……swt_awt可能吗?”bito4ek补充道