0

我有以下标签字段,我希望它可以点击并捕获/处理其焦点/取消焦点事件。

titleField = new LabelField(title,FOCUSABLE|USE_ALL_WIDTH){
            public void paint(Graphics graphics)
            {
                graphics.setColor(Color.BLUE);
                graphics.drawText(_title, 30,0);
                super.paint(graphics);
            }

             protected boolean navigationClick(int status,int time)
                {
                    if(panel != null) panel.takeAction();
                    return true;
                }

                protected void onFocus(int dir)
                {
                    super.onFocus(dir);
                    panel.setSelectedIndex(_index); 
                }

                protected void onUnfocus()
                {
                    if(!_collapse){
                    _prevIndex = _index;
                    panel.setPreviousSelectedIndex(_prevIndex);
                    }
                }
        };

到目前为止,代码在我的 os5 模拟器上按预期工作,但在 os6/7 模拟器上,标签字段只是显示为空白(我什至尝试删除 super.paint(graphics); 调用但仍然得到相同的结果)。任何想法发生了什么?谢谢

4

2 回答 2

2

我建议您每次更改字段时删除drawText并调用标签。setText_title

我还看到您不会将super.onUnfocus()其称为导致重绘问题。

于 2012-06-04T15:12:55.597 回答
1

我想通了...实际上在我的布局(水平)中,我有一个复选框字段,然后是一个标签字段..出于某种奇怪的原因,即使我没有指定 USE_ALL_WIDTH,复选框字段也占用了 os6/7 模拟器上的所有水平空间。通过覆盖布局并指定复选框字段的尺寸,布局现在可以正常运行。感谢您的提示:)

于 2012-06-05T02:31:35.170 回答