如何在GXT中禁用DualListField的“Add Selected”按钮?

时间:2012-10-15 06:41:48

标签: java gwt gxt

我正在Java 6项目中使用GWT 2.0.0。我正在处理的功能允许用户选择DualListField中的项目,但只允许一定数量的项目。所以我要求在达到某个限制时禁用DualListField按钮栏中的“Add selected”和“Add all”按钮(即只能选择x个项目)。有没有人尝过这个?除了自定义DualListField之外,还有更简单的方法吗?

感谢。

2 个答案:

答案 0 :(得分:2)

创建一个从DualListField扩展的新XY类。在此XY类中定义类似:

public clas XY <D extends ModelData> extends DualListField<D>{
    public static final int leftButton = 0x1;
    public static final int rightButton = 0x2;
    public static final int allLeftButton = 0x3;
    public static final int allRightButton = 0x4;
    public static final int upButton = 0x5;
    public static final int downButton = 0x6;

List<Integer> buttonsToRemoveList;

public CustomDualListField(List<Integer> buttonsToRemoveList){
    super();
    this.buttonsToRemoveList = buttonsToRemoveList;
}

    @Override
    protected void onRender(Element target, int index) {
        super.onRender(target, index);

        if(buttonsToRemoveList != null){
            for(Integer val:buttonsToRemoveList){
                switch(val.intValue()){
                    case leftButton:{
                        buttonBar.remove(left);
                        break;
                    }
                    case rightButton:{
                        buttonBar.remove(right);
                        break;
                    }
                    case allLeftButton:{
                        buttonBar.remove(allLeft);
                        break;
                    }
                    case allRightButton:{
                        buttonBar.remove(allRight);
                        break;
                    }
                    case upButton:{
                        buttonBar.remove(up);
                        break;
                    }
                    case downButton:{
                        buttonBar.remove(down);
                        break;
                    }
                }
            }
        }
    }
}

使用这种方法,您可以配置将要显示的按钮。

答案 1 :(得分:0)

通过自定义DualListField并设置:

,我能够实现这一目标
super.buttonBar.getWidget(0).setVisible(false)