【问题标题】:How to set focus to FieldManager in BlackBerry?如何在 BlackBerry 中将焦点设置到 FieldManager?
【发布时间】:2012-04-24 13:39:31
【问题描述】:

如何在 BlackBerry 中将焦点吸引到 VerticalFieldManager

我试过了,但没用。

VerticalFieldManager vv=new VerticalFieldManager(Manager.focusFOCUSABLE);

【问题讨论】:

  • Manager.focusFOCUSABLE - 这可能会导致编译错误。默认情况下VerticalFieldManager 是可聚焦的。但是如果你没有在其中添加任何可聚焦的Field,它就不会获得焦点。因此,如果您希望空的 VerticalFieldManager 可聚焦,则向其添加 NullField(类似于 new NullField(NullField.Focusable))。
  • 要使经理可聚焦,至少需要经理中的一项可聚焦。如果您的经理中没有任何可聚焦的字段,那么您可以通过在其中添加空字段来关注经理。

标签: blackberry


【解决方案1】:

你可以尝试在上面调用Field.setFocus,但由于经理是一个容器,我不确定你会看到它上面的“焦点”。

如果不起作用,您还可以尝试覆盖paint 方法,并在isFocus 返回true 时绘制自己的自定义焦点。

【讨论】:

    【解决方案2】:

    这是这样做的方法:

    VerticalFieldManager vv=new VerticalFieldManager(FOCUSABLE) {
        protected void paintBackground(Graphics g) {
        int prevColor = g.getColor();
        int bgColor;
    
        if (isFocus()) {
            bgColor = Color.Blue;
        } else {
            bgColor = Color.White;
        }
    
        g.setColor(bgColor);
        g.fillRoundRect(0, 0, getPreferredWidth(), getPreferredHeight(), 0, 0);
        g.setColor(prevColor);
    }
        public void onFocus(int direction) {
        super.onFocus(direction);
        this.invalidate();
    }
    public void onUnfocus() {
        super.onUnfocus();
        this.invalidate();
    }
    };
    _focusAnchor = new NullField(FOCUSABLE);
    add(_focusAnchor);
    

    【讨论】:

      【解决方案3】:

      试试这个 -

      VerticalFieldManager vv=new VerticalFieldManager(FOCUSABLE);
      

      然后将项目添加到 vv。

      【讨论】:

        猜你喜欢
        • 2012-12-12
        • 1970-01-01
        • 1970-01-01
        • 2016-10-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-27
        • 2020-03-24
        相关资源
        最近更新 更多