【问题标题】:How to make my Java destop application show an image before it starts?如何让我的 Java 桌面应用程序在启动前显示图像?
【发布时间】:2010-02-10 06:58:51
【问题描述】:

我使用的是 NetBeans IDE 6.8(Mac 版)。他们的 GUI builder 的哪个工具可以帮助我做到这一点?

我想要的是在我向用户显示应用程序之前,在我的应用程序加载几秒钟时向用户显示图像。我怎样才能做到这一点?初始化

【问题讨论】:

    标签: java user-interface loading photo initializing


    【解决方案1】:

    如果您安装了 Java 6,请查看Splash-Screen tutorial

    【讨论】:

      【解决方案2】:

      实际上,您可以通过在 java 程序中使用 -splash 标志来做到这一点... 例如,您想在运行 main.class 时显示图像 splash.jpg,

      所以你要做的是,

      java -splash:pathoftheimage/splash.jpg main

      【讨论】:

        【解决方案3】:

        当您在 MAC 上运行时,您可能无法访问 Java 6,因此必须自己构建启动画面。您应该在初始化周期中尽早运行类似于以下的代码(即,让启动画面对话框显示最长时间)。

        JDialog dlg = new JDialog();
        // Remove dialog decorations to make it look like a splashscreen.
        dlg.setUndecorated(true);
        dlg.setModal(true);
        dlg.setLayout(new BorderLayout());
        // Load image.
        ImageIcon img = new ImageIcon(getClass().getResource("/foo/bar/splash.png");
        // Add image to center of dialog.
        dlg.add(img, BorderLayout.CENTER);
        dlg.setLocationRelativeTo(null);
        dlg.setVisible(true);
        
        // ... Perform application initialisation here.
        
        // Initialisation complete so hide dialog.
        dlg.setVisible(false);
        dlg = null;
        

        【讨论】:

        • Mac OS X 从 10.5 开始就提供 Java 6。
        • 我应该为以下类导入什么库:BorderLayout();图像图标();
        • 你需要导入 java.awt.* 和 javax.swing.* 虽然如果你使用一个好的 IDE 它应该执行自动导入。如果没有,您可以使用 JDK 在线文档来确定要导入的包:java.sun.com/javase/6/docs/api
        • @Joachim:我不知道。 @MAK:鉴于 Joachim 的回应,您绝对应该首先尝试“-splash”路线,因为它不涉及代码更改。
        • 好吧...我遇到异常错误>> javax.swing.ImageIcon.(ImageIcon.java:138)
        【解决方案4】:

        如果您使用的是NetBeans...那么不用担心NetBeans 已经为您解决了这个问题。

        1. Right Click 打开后在您的Project 上。
        2. 转到properties
        3. 点击Application
        4. 会有Splash ScreenBrowse你想展示的图片。

        如下图所示

        当您执行此操作时,您的image 将显示,但您将无法看到此内容。要查看它,您必须 delay timeappearencenext window。为此,请执行以下步骤。

        1. 转到您接下来要显示的JFrame code 区域。
        2. Main Fun 中会有run 的乐趣。
        3. run函数里面只写下面的代码。

          试试{

          Thread.sleep(以毫秒为单位的时间就像 4200);

          //Create Next Frame Object Here }

          catch(异常前) { }

        【讨论】:

        • 请不要将inline code markup 用于任何实际的内联代码。在整篇文章中几乎每次使用它都是错误的。 (是的,即使是代码部分——再次缩进代码块以获得你应该拥有的代码块。)
        猜你喜欢
        • 1970-01-01
        • 2010-11-02
        • 1970-01-01
        • 2014-11-26
        • 1970-01-01
        • 2016-11-02
        • 2021-12-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多