1

我想创建一个光标保持在右侧的编辑字段。
为了说明我是否要写“黑莓”,结果应该是这样的。

<-----------width-of-editfield------>
                                    b
                                   bl
                                  bla
                                 blac
                                black
                               blackb
                              blackbe
                             blackber
                            blackberr
                           blackberry

谢谢


由于缺乏声誉的感觉,我无法回答我自己的问题。
无论如何,我找到了一个简单的方法。width指持有此编辑字段的管理器的宽度。

editField = new EditField("","",maxChars,EditField.NO_NEWLINE | EditField.NON_SPELLCHECKABLE){
        protected boolean keyChar(char key, int status, int time) {
        editField.setPadding(0, 0, 0, width - (getFont().getAdvance(this.getText())) - 10);
        invalidate();
        return super.keyChar(key, status, time);
    }
};
4

2 回答 2

1

Manager不幸的是,您将不得不创建自己的. 没有简单或明显的方法可以做到这一点。

BlackBerry 论坛上发布了带有源代码的解决方案。

于 2011-05-26T14:19:32.327 回答
1

就像斯瓦蒂的解决方案一样。我确实喜欢这样:

editField = new EditField("", "", maxChars, EditField.NO_NEWLINE | EditField.NON_SPELLCHECKABLE){
    protected boolean keyChar(char key, int status, int time){
        switch (key){
            case Characters.BACKSPACE:{
                try {
                    text = text.substring(0,text.length()-1);
                    invalidate();
                } catch (IndexOutOfBoundsException e) {}
                return true;
            }
        }
        text = text + key;
        invalidate();
        return true;
    }
    protected void paint(Graphics graphics) {
        graphics.drawText(text,0, 0, DrawStyle.RIGHT, width - 10);
        super.paint(graphics);
    }
};
于 2011-05-27T08:17:26.623 回答