【问题标题】:VerticalFieldManager not Scrolling for jre5VerticalFieldManager 不滚动 jre5
【发布时间】:2012-01-06 14:11:41
【问题描述】:

我在我的系统中使用 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..

如何让它滚动?

【问题讨论】:

    标签: blackberry


    【解决方案1】:

    要让VerticalFieldManager 滚动,请在LabelField 前后添加可聚焦的NullField 对象。

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

    现在它会立即从标签的底部滚动到顶部,反之亦然。要摆脱这个问题,请使用RichTextField。是显示长文本的最佳选择。它本身处理垂直(逐行)和水平(逐个字符)滚动。

    【讨论】:

    • 是的,我已经在回答中提到了。但它解决了滚动问题。要解决“但它只显示文本的第一部分和最后一部分”,您有很多选择。您可以将文本拆分为多行并将每一行添加到 LabelField 中。请参阅@rfsk2010 的回答。
    • 就这样吧,vfm.add(new RichTextField(text));
    • 是的,然后在另一个 VerticalFieldManager 上添加一个 LabelField(标题)和 RichTextField(内容)。
    • 我已经做到了..但仍然想改进一点..我需要按钮在屏幕底部是静态的(现在只有当我向下滚动到末尾时我的richtextfield)..此外,按下ecs时CustomDialog屏幕正在关闭..我可以禁用那个default_close吗?期待您的宝贵答复..
    • 要禁用后退菜单上的默认关闭,请在 PopupScreen 实现上按覆盖 public boolean onClose() {return true;}。您可以在底部查看静态字段管理器(可以按住按钮)的以下答案。stackoverflow.com/a/7174143/431639
    【解决方案2】:

    如果文本不太长,Rupaks 答案将适用于滚动。但是如果文本像几页,例如 EULA 或条款和条件,它会从起始页跳转到最后一页。

    如果我已将 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); 
    

    【讨论】:

    • 您可以创建一个不可编辑的编辑字段为 EditField txt = new EditField(Field.FOCUSABLE | Field.READONLY)
    • 得到了 rupak 亲爱的解决方案。编辑字段显示键盘,可以编辑我的文本。
    【解决方案3】:

    试试

        super(Screen.DEFAULT_CLOSE|VERTICAL_SCROLL);
    

    代替

        super(Screen.DEFAULT_CLOSE);
    

    和

        vfm = new VerticalFieldManager(VERTICAL_SCROLL);
    

    代替

        vfm = new VerticalFieldManager(Manager.VERTICAL_SCROLL);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多