如何使用闪屏没有抛出一个NullPointerException?(How do I use Spl

2019-08-22 04:41发布


不管我怎么努力, SplashScreen.getSplashScreen() 始终null

从网上搜索我看到,这是一个常见的问题,而且它有事情做与不给SplashScreen使用的图像......因此,在航行在我看来,这些方法setImageURL(URL)应该被使用。 这仍然没有工作。

上有如此相似的问题,比如这个 ,这是没有帮助的,似乎使用插件无数或创建从延伸从头这样的类建议Frame 。 即使甲骨文教程是神秘的,并没有勾勒出每个用合乎逻辑的步骤SplashScreen正确...

如果这是不可能或不必要很难用SplashScreen ,没有任何替代这样做呢? 或者有没有人砍死了一个简单的方法解决这个问题?


这里是我的尝试:

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.SplashScreen;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.net.URL;

/**
 */
public final class MainGUI implements ActionListener {

    /**
     * @throws IOException 
     * @throws IllegalStateException 
     * @throws NullPointerException 
     */
    private final static void showSplashScreen() throws NullPointerException, IllegalStateException, IOException {
        final SplashScreen splash = SplashScreen.getSplashScreen();
        Graphics2D graphics = splash.createGraphics();

        // adding image here:
        URL imageSource = new URL("http://upload.wikimedia.org/wikipedia/commons/thumb/7/76/Space_Shuttle_Atlantis_approaching_the_Kennedy_Space_Center_to_land_following_STS-122.jpg/800px-Space_Shuttle_Atlantis_approaching_the_Kennedy_Space_Center_to_land_following_STS-122.jpg");
        splash.setImageURL(imageSource);

        // coordinates and dimensions:
        int x = 100, y = x;
        int width = 500, height = width;

        // (x, y), width, height:
        graphics.create(x, y, width, height);

        graphics.setBackground(Color.BLUE);

        // adding and centering the text:
        graphics.drawString("centered text", (x + width)/2, (y + height)/2);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        try {
            showSplashScreen();
        } catch (NullPointerException | IllegalStateException | IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
} // end of MainGUI

Answer 1:

看看如何创建一个闪屏

你要么需要通过命令行或JAR清单提供图像

一些基础知识更新

您必须为闪屏提供的图像。 如果你不这样做,它永远是零。

有两种方法可以做到这一点

1.在命令行

java -splash:path/to/image.jpg {other command line options}

图像必须驻留的类加载器的应用程序的上下文中(例如,嵌入的资源)。

2.清单文件

这是有点难度,但会导致一个更简单的执行(因为没有人需要记住添加的命令行;))...

看看与清单文件工作的更多细节。

你如何创建它取决于你的环境。

例如,在NetBeans中,可以设置开机画面属性在项目属性对话框中,在Application节点。



文章来源: How do I use SplashScreen without throwing a NullPointerException?