Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用SplashScreen而不抛出NullPointerException?_Java_Null_Nullpointerexception_Splash Screen - Fatal编程技术网

Java 如何使用SplashScreen而不抛出NullPointerException?

Java 如何使用SplashScreen而不抛出NullPointerException?,java,null,nullpointerexception,splash-screen,Java,Null,Nullpointerexception,Splash Screen,无论我怎么做,SplashScreen.getSplashScreen()总是为null。 通过在线搜索,我发现这是一个常见的问题,它与没有给SplashScreen一个图像来使用有关。。。因此,在导航这些方法时,我觉得应该使用setImageURL(URL)。这仍然不起作用。 在这方面也有类似的问题,例如,这些问题没有帮助,似乎建议使用大量插件或从头开始创建这样一个类,从Frame扩展。即使是这个脚本也很晦涩,不能正确地概括使用SplashScreen的每个逻辑步骤。。。 如果不可能或不


无论我怎么做,
SplashScreen.getSplashScreen()
总是
null


通过在线搜索,我发现这是一个常见的问题,它与没有给
SplashScreen
一个图像来使用有关。。。因此,在导航这些方法时,我觉得应该使用
setImageURL(URL)
。这仍然不起作用。

在这方面也有类似的问题,例如,这些问题没有帮助,似乎建议使用大量插件或从头开始创建这样一个类,从
Frame
扩展。即使是这个脚本也很晦涩,不能正确地概括使用
SplashScreen
的每个逻辑步骤。。。

如果不可能或不必要地难以使用
SplashScreen
,是否有其他替代方法?还是有人想出了解决这个问题的简单方法?

以下是我的尝试:

看看

您需要通过命令行或Jar清单提供映像

更新一些基础知识

您必须为启动屏幕提供一个图像。如果不这样做,它将始终为空

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

1.从命令行 映像必须位于应用程序的类加载器的上下文中(例如嵌入式资源)

2.清单文件 这有点困难,但会导致更简单的执行(因为没有人需要记住添加命令行;)

查看更多详细信息

如何创建它取决于您的环境


例如,在Netbeans中,您可以在项目属性对话框中的
应用程序
节点下设置启动屏幕属性。

这是我称之为“神秘”的链接。我将试图找到这个“清单文件”和如何编辑它,然后。。。我以前没有遇到过这种情况,但在这里找到了一些信息:。
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
java -splash:path/to/image.jpg {other command line options}