Java GXT网格中不可隐藏的列

Java GXT网格中不可隐藏的列,java,gwt,extjs,gxt,Java,Gwt,Extjs,Gxt,我正在寻找一种方法来防止用户在我的网格中隐藏某些列。我试图覆盖Menu createContextMenu(final int colIndex)方法的GridView,在该方法中,我找到与我的不可隐藏列相关的子菜单项,并对它们调用disable(): ... for (Component menuItem : menu.getItems()) { String text = ((MenuItem) menuItem).getText(); if (((MenuItem) men

我正在寻找一种方法来防止用户在我的网格中隐藏某些列。我试图覆盖
Menu createContextMenu(final int colIndex)
方法的
GridView
,在该方法中,我找到与我的不可隐藏列相关的子菜单项,并对它们调用
disable()

...
for (Component menuItem : menu.getItems()) {
    String text = ((MenuItem) menuItem).getText();
    if (((MenuItem) menuItem).getSubMenu() != null && (text.equals("Columns"))) {
        for (Component subMenuItem : ((MenuItem) menuItem).getSubMenu().getItems()) {
            String subMenuItemText = ((MenuItem) subMenuItem).getText();
            if (<i want this column to be not hidable>) {
                subMenuItem.disable();
            }
        }
    }
}
...         
。。。
对于(组件菜单项:menu.getItems()){
字符串文本=((MenuItem)MenuItem.getText();
if(((MenuItem)MenuItem.getSubMenu()!=null&&(text.equals(“Columns”)){
对于(组件子菜单项:((MenuItem)MenuItem.getSubMenu().getItems()){
字符串subnumItemText=((MenuItem)subnumItem).getText();
如果(){
子菜单项。禁用();
}
}
}
}
...         
它几乎可以工作——当网格刚刚呈现时,我禁用的菜单项将变灰,并且它们不接受用户的输入。但是,在切换其他未禁用的列后,所有列都会中断。突然,禁用的菜单项变为启用

我使用的是GXT 2.2.6


谢谢大家!

找到了问题的原因。列中的任何更改都将调用GXT侦听器,并最终调用GridView的restrictMenu方法。这将覆盖我的所有禁用设置。解决方案是添加自定义侦听器,让GXT的侦听器执行其工作,然后覆盖启用/禁用设置