我想获取ExpandBar里面变量focusItem的值,focusItem是ExpandBar的公共变量,但不是public的我的代码,当然这是错的
public class MyExpandBar extends ExpandBar {
ExpandItem focusItem;

public MyExpandBar(Composite parent, int style) {
super(parent, style);
}

public ExpandItem getFocusItem(){
return focusItem;
}
}ExpandBar部分源代码如下   
 public class ExpandBar extends Composite {
ExpandItem[] items;
int itemCount;
ExpandItem focusItem;
int spacing;
int yCurrentScroll;
int hFont;

public ExpandBar (Composite parent, int style) {
super (parent, checkStyle (style));
}
...
}

解决方案 »

  1.   

    你子类的吧父类的focusItem给覆盖了,并且又没有初始化...始终返回null
      

  2.   


    他不是定义成public,我怎么用?
      

  3.   

    就是下面加粗的那个...它不是public,我外面访问不了
    public class ExpandBar extends Composite {
    ExpandItem[] items;
    int itemCount;
    ExpandItem focusItem;
    int spacing;
    int yCurrentScroll;
    int hFont;
      

  4.   

    把你的MyExpandBar里面的ExpandItem focusItem;删掉
    在MyExpandBar里
    public ExpandItem getFocusItem(){
            //如果focusItem的初始化不是在ExpandBar的构造方法里,先调用为focusItem初始化的方法(必须非private)
            return focusItem;
        }
      

  5.   


    删掉MyExpandBar里面的ExpandItem focusItem;就报错
    给它赋值的方法都不是public的,例如下面这种我看不懂的函数...LRESULT WM_LBUTTONDOWN (int wParam, int lParam) {
    LRESULT result = super.WM_LBUTTONDOWN (wParam, lParam);
    if (result == LRESULT.ZERO) return result;
    int x = (short) (lParam & 0xFFFF);
    int y = (short) (lParam >> 16);
    for (int i = 0; i < itemCount; i++) {
    ExpandItem item = items[i];
    boolean hover = item.isHover (x, y);
    if (hover && focusItem != item) {
    focusItem.redraw (true);
    focusItem = item;
    focusItem.redraw (true);
    forceFocus ();
    break;
    }

    return result;
    }