黑莓Java:TextField*没有*插入符号?

noa*_*mtm 1 user-interface blackberry caret textfield labelfield

我想要一个甚至没有显示插入符号的不可编辑的TextField(或子类).或者,我想要一个多行LabelField.这些都有可能吗?

Mak*_*tar 8

TextField没有焦点光标

TextField readOnly = new TextField(NON_FOCUSABLE);
readOnly.setText("Read only, no carret");
add(readOnly);
Run Code Online (Sandbox Code Playgroud)

TextField drawFocus覆盖

如果文本太大而无法适应屏幕,则可以在TextField中覆盖drawFocus方法,因此可以使用滚动:

TextField readOnly = new TextField(READONLY)
{
    protected void drawFocus(Graphics graphics, boolean on) {}
};
Run Code Online (Sandbox Code Playgroud)

TextFields,用NullField分隔

其他选项是将TextField拆分为多个,用NullField分隔:

class Scr extends MainScreen {
    public Scr() {

        String text = "Lorem ipsum dolor sit amet, consectetuer "
                + "adipiscing elit, sed diam nonummy nibh euismod "
                + "tincidunt ut laoreet dolore magna aliquam erat "
                + "volutpat. Ut wisi enim ad minim veniam, quis "
                + "nostrud exerci tation ullamcorper suscipit "
                + "lobortis nisl ut aliquip ex ea commodo consequat. "
                + "Duis autem vel eum iriure dolor in hendrerit in "
                + "vulputate velit esse molestie consequat, vel "
                + "illum dolore eu feugiat nulla facilisis at vero "
                + "eros et accumsan et iusto odio dignissim qui "
                + "blandit praesent luptatum zzril delenit augue "
                + "duis dolore te feugait nulla facilisi.";

        text = addScrollText(text, 150);
    }

    private String addScrollText(String text, int partSize) {
        while (0 < text.length()) {
            int len = Math.min(partSize, text.length());
            TextField readOnly = new TextField(NON_FOCUSABLE);
            readOnly.setText(text.substring(0, len));
            add(readOnly);
            add(new NullField());
            text = text.substring(len);
        }
        return text;
    }
}
Run Code Online (Sandbox Code Playgroud)

多行标签字段

LabelField中的多行文本,只需使用换行转义字符:

String text = "first line \nnew line \nanother line";
LabelField multiLine = new LabelField(text);
add(multiLine);
Run Code Online (Sandbox Code Playgroud)