java - 延迟显示管理器中的字段(黑莓)

标签 java blackberry

我有一个循环向管理器添加字段,我试图延迟每个字段绘制到屏幕上之间的时间。我一直在尝试下面的代码,但它只是在所有字段都添加到其中后才绘制管理器。 这可能吗?

manager.add(field);
manager.invalidate();//force a repaint of the manager
Thread.sleep(1000);

谢谢

最佳答案

Invalidate 并不一定会强制绘制,它只是表示在下一次绘制时需要重新绘制 Field(或您的情况下的 Manager)。这是一个微妙的差异,但可能会引起困惑。您可能想要尝试的是调用 Screen.doPaint() ,这将强制重新绘制整个屏幕。另外,将 sleep() 放在事件线程中不会有帮助,因为绘画也是在同一个线程上完成的。

如果您尝试在第二次延迟的情况下按顺序向管理器添加字段,则应将此逻辑放入其自己的线程中并执行 synchronized(UiApplication.getEventLock()){//add fields} 当你调用 manager.add(field) 时。然后你可以调用你的 Thread.sleep(1000) 来正确地延迟显示。另外,就像一些添加的信息一样,调用 add() 本质上会导致 invalidate() 调用,因此您不需要添加它。下面是第二次延迟添加的简单示例

protected void addDelayedFields() {
    Thread t = new Thread( new Runnable() {
        public void run() {
            for(int i=0;i<SOME_LIMIT;i++) {
                synchronized(UiApplication.getEventLock()) {
                    manager.add(new LabelField(i.toString());
                }
                try{
                    Thread.sleep(1000);
                }
                catch(Exception e){ }
            }
        }
    });
    t.start();
}

绘制应该在 add() 之后发生,但如果没有发生,您也可以调用 yourScreen.doPaint()

关于java - 延迟显示管理器中的字段(黑莓),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6070446/

相关文章:

java - 忽略 vim java 警告

java - 在Java中解析具有特殊字符的JSON对象

java - 黑莓替换字符串的方法?

browser - 如何在 BlackBerry 应用程序中打开网页?

javascript - jQuery 无法在 Blackberry OS 5 中运行?备择方案?

Blackberry Apps - 将代码签名的 jar 导入应用程序项目

使用 Netbeans 的 Java 桌面应用程序

Java:抛出异常后如何继续读取文件

java - 非标准 HTTP 方法和 Apache Http 组件

blackberry - 黑莓中OTAInstall和StandardInstall的区别