【问题标题】:Codename one Splash screen new gui builder代号一 启动画面新 gui 生成器
【发布时间】:2018-07-11 19:28:17
【问题描述】:

在旧的 GUI 构建器中,我只需在命令中按“下一个表单”即可。在新的 GUI 构建器中,我试图通过代码实现它。但是,它没有等待 5 秒,应用程序直接进入下一个表单。

我想做什么:在 Splash 中停留 5 秒钟,然后转到登录表单。这将如何运作?

我的表格: Splash.java, 有 GIF 动画。 Login.java(下一个表格) Myapplication.java(主窗体)

主文件,我的应用程序代码:

public void start() {
    if(current != null){
        current.show();
        return;
    }
    new Splash().show();
    try {
        Thread.sleep(5000);
    } catch (InterruptedException ex) {
    }
    new Login().show();
}

更新:我在登录表单中添加了睡眠代码,每次我去那里,它都会等待 5 秒。这是做到这一点的最佳方式吗? 公共登录(){

this(com.codename1.ui.util.Resources.getGlobalResources());

   try {
Thread.sleep(3000);
} catch (InterruptedException ex) {
}

更新 2:

 public void start() {
        if(current != null){
            current.show();

            return;
        }
        new Splash().show();
     //   new login().show();





            new UITimer(() -> {
        new login().show();
}).schedule(3000, false, new login());

不工作。

【问题讨论】:

  • 正如@SolStack 提到的,您应该使用UITimer sleep 将 EDT 固定在适当的位置,不会让它绘制或做任何事情(例如显示表单)请参阅 codenameone.com/manual/edt.html
  • 谢谢。又做了一次更新,还是漏掉了一些东西。

标签: java codenameone


【解决方案1】:

尝试改用 Codename One UITimer 类。

https://www.codenameone.com/javadoc/com/codename1/ui/util/UITimer.html

类似的东西:

new UITimer(() -> {
  new Login().show();
}).schedule(5000, false, this);

【讨论】:

  • 我是把它放在主类还是登录表单?因为它说“不兼容的类型。我的应用程序无法转换为表单”。这是红线。
  • public void start() { if(current != null){ current.show();返回;新的飞溅().show();新的 webtest().show(); new UITimer(() -> { new Login().show(); }).schedule(3000, false, new Login());不工作。
  • 这将进入启动页面。 UITimer 在运行括号中的代码之前等待预定的时间。
  • 为了清楚起见,您只需要显示一个表格。删除`new webtest().show(); ` 并且只显示飞溅。然后在计时器结束后显示 webtest(显示登录名的位置)。注意你刚刚做了new Login() 而忽略了show()
猜你喜欢
  • 2021-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-30
  • 2013-04-14
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
相关资源
最近更新 更多