首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在HorizontalFieldManager上设置焦点

无法在HorizontalFieldManager上设置焦点
EN

Stack Overflow用户
提问于 2012-06-11 19:15:23
回答 3查看 416关注 0票数 1

我无法将焦点放在拥有两个LabelFieldsHorizontalFieldManager上。当HorizontalFieldManager获得焦点时,我想突出显示它。我正在使用以下代码,但它不起作用。

代码语言:javascript
复制
HorizontalFieldManager hrzMgrTimeLabel = new HorizontalFieldManager(
        Manager.USE_ALL_HEIGHT|Manager.FOCUSABLE) {

    protected void onFocus(int direction) {
        focussed = true;
        invalidate();
        super.onFocus(direction);
    }

    protected void onUnfocus() {
        focussed = false;
        invalidate();
        super.onUnfocus();
    }

    protected void paint(Graphics g) {
        g.setBackgroundColor(0x646060);
        if (focussed) {
            g.setColor(Color.BLUE);
        }
        g.clear();
        super.paint(g);
    }
};

hrzMgrTimeLabel.add(a);
hrzMgrTimeLabel.add(b);

horizontalFieldManager_left15.add(hrzMgrTimeLabel);

下面是LabelField的实现。

代码语言:javascript
复制
final LabelField a= new LabelField("") {
    protected void paint(Graphics graphics) {
        graphics.setColor(Color.WHITE);
        graphics.setBackgroundColor(0x646060);
        graphics.clear();
        super.paint(graphics);
    }
};

final LabelField b= new LabelField("") {
    protected void paint(Graphics graphics) {
        graphics.setColor(Color.WHITE);
        graphics.setBackgroundColor(0x646060);
        graphics.clear();
        super.paint(graphics);
    }
};
EN

回答 3

Stack Overflow用户

发布于 2012-06-11 19:57:40

getFocusRect()函数可能会给出答案。它给出了在管理器中应用焦点的范围,然后可以使用Graphics.paint()方法或Border类。

票数 1
EN

Stack Overflow用户

发布于 2012-06-11 19:37:12

如果您想要聚焦您的标签字段,那么使用final LabelField a= new LabelField("".FOCUSABLE)

票数 0
EN

Stack Overflow用户

发布于 2012-06-11 19:56:45

您需要在HorizontalFieldManager上至少有一个可聚焦字段。下面这行代码可以做到这一点。

代码语言:javascript
复制
hrzMgrTimeLabel.add(new NullField(NullField.FOCUSABLE));

检查以下代码。

代码语言:javascript
复制
HorizontalFieldManager hrzMgrTimeLabel = new HorizontalFieldManager(Manager.USE_ALL_HEIGHT | Manager.FOCUSABLE) {
    protected void paint(Graphics g) {
        g.setBackgroundColor(isFocus() ? Color.BLUE : 0x646060);
        g.clear();
        super.paint(g);
    }

    protected void onFocus(int direction) {
        invalidate();
        super.onFocus(direction);
    }

    protected void onUnfocus() {
        invalidate();
        super.onUnfocus();
    }

    protected boolean navigationMovement(int dx, int dy, int status, int time) {
        invalidate();
        return super.navigationMovement(dx, dy, status, time);
    }

    protected boolean navigationClick(int status, int time) {
        invalidate();
        return super.navigationClick(status, time);
    }

    protected boolean navigationUnclick(int status, int time) {
        invalidate();
        return super.navigationUnclick(status, time);
    }
};

final LabelField a = new LabelField("First Label Field") {
    protected void paint(Graphics graphics) {
        graphics.setColor(Color.WHITE);
        super.paint(graphics);
    }
};

final LabelField b = new LabelField("Second Label Field") {
    protected void paint(Graphics graphics) {
        graphics.setColor(Color.WHITE);
        super.paint(graphics);
    }
};

hrzMgrTimeLabel.add(new NullField(NullField.FOCUSABLE));
hrzMgrTimeLabel.add(a);
hrzMgrTimeLabel.add(b);

便笺

onFocus(...)onUnfocus()navigationMovement(...)navigationClick(...)navigationUnclick(...) -这些方法只是为了刷新绘图而被覆盖。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10979027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档