Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SWT组合禁用项_Java_Combobox_Swt - Fatal编程技术网

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补充道