VerticalFieldManager не прокручивается для jre5 - PullRequest
0 голосов
/ 05 января 2012

Я использую jre 5 и симулятор 9550 в моей системе .. У меня проблема с прокруткой VerticalFieldManager ..

. Я вызываю новый экран из моего файла MainScreen java..

Код похож на ...

UiApplication.getUiApplication().invokeLater(new Runnable() 
{
    public void run() 
    {
        try
        {
            UiApplication.getUiApplication().pushScreen(new CustomDialog());
        }
        catch (Exception e) {
            Dialog.alert("loading Error");
        }
    }
});

И этот CustomDialog.java похож на ...

public final class CustomDialog extends MainScreen
{
    LabelField title, message;
    HorizontalFieldManager hfm;
    VerticalFieldManager vfm;
    GridFieldManager gfm;

    public CustomDialog()
    {
        super(Screen.DEFAULT_CLOSE);

        hfm = new HorizontalFieldManager(Field.FIELD_LEFT);
        title = new LabelField("hello User",FIELD_HCENTER)
        {
            protected void paint(Graphics graphics) {
                graphics.setColor(Color.BROWN);
                super.paint(graphics);
            };
        };
        title.setFont(getFont().derive(Font.BOLD, 20));
        hfm.add(title);
        add(hfm);

        vfm = new VerticalFieldManager(Manager.VERTICAL_SCROLL);
        message = new LabelField("my text");//Actually a long text..
        vfm.add(message);
        VerticalFieldManager tmp = new VerticalFieldManager();
        tmp.add(vfm);
        add(tmp);
    }
}

Сообщение отображается на экране,но это не прокрутка .. На самом деле, сообщение является длинным текстом, и я хочу сделать прокрутку для этого VerticalFieldManager ..

Как мне получить прокрутку?

Ответы [ 3 ]

1 голос
/ 05 января 2012

Чтобы получить прокрутку VerticalFieldManager, добавьте фокусируемый объект NullField до и после LabelField.

vfm.add(New NullField());
vfm.add(message);
vfm.add(New NullField());

Теперь он будет прокручиваться снизу вверх надписи сразу и наоборот. Чтобы избавиться от этой проблемы, используйте RichTextField. Это лучший выбор для отображения длинного текста. Он сам выполняет прокрутку по вертикали (строка за строкой) и по горизонтали (символ за символом).

0 голосов
/ 05 января 2012

попробуй

    super(Screen.DEFAULT_CLOSE|VERTICAL_SCROLL);

isteadOf

    super(Screen.DEFAULT_CLOSE);

и

    vfm = new VerticalFieldManager(VERTICAL_SCROLL);

isteadOf

    vfm = new VerticalFieldManager(Manager.VERTICAL_SCROLL);
0 голосов
/ 05 января 2012

Ответ Рупакса будет работать для прокрутки, если текст не слишком длинный.Но если текст похож на несколько страниц, например, лицензионное соглашение или условия, он переместится с начальной страницы на последнюю.

Вы можете решить эту проблему с помощью следующего кода, в котором я заменил labelField на editField.

                    LabelField title;
                    EditField message;
                    HorizontalFieldManager hfm;
                    VerticalFieldManager vfm;
                    GridFieldManager gfm; 
                    final MainScreen screen=new MainScreen();
                    hfm = new HorizontalFieldManager(Field.FIELD_LEFT);
                    title = new LabelField("hello User",FIELD_HCENTER)
                    {
                        protected void paint(Graphics graphics) {
                            graphics.setColor(Color.BROWN);
                            super.paint(graphics);
                        };
                    };
                    title.setFont(getFont().derive(Font.BOLD, 20));
                    hfm.add(title);
                    add(hfm);

                    vfm = new VerticalFieldManager(Manager.VERTICAL_SCROLL);
                    message = new EditField("","long text");

                    vfm.add(message);
                    VerticalFieldManager tmp = new VerticalFieldManager();
                    tmp.add(vfm);
                    add(tmp); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...