以编程方式显示启动画面

8
我目前正在开发一个Java应用程序,这是我的第一个Java应用程序。因此,我创建了一个名为Splash.png的文件,并将其放置在应用程序的源文件夹resources中。
我已经成功地使用JVM参数-splash:resources/Splash.png在启动时显示了Splash图像,但我的问题是; 如何以编程方式再次显示此闪屏屏幕? 我需要这个功能来实现About菜单项。

在启动画面之前,有JWindow或JDialog(未装饰) - mKorbel
4个回答

4

这里有一个关于如何以编程方式使用启动画面的杰出示例。

-splash也在其中有描述。


也许链接已经改变,但目前为止,这篇文章实际上并没有解释如何通过编程方式显示启动画面,只能通过“-splash”参数或使用清单来实现。 - bluenote10

2

使用java.awt.SplashScreen类。

顺便说一句,我不知道JVM有这个很酷的选项“-splash”。所以,谢谢你提供的信息!


2

感谢您的大力帮助。 我认为没有真正实现这一功能的函数,所以我编写了一个JFrame,可以在启动时显示它而不是闪屏。 为了防止有人需要代码,我在此发布:

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class AboutWindow extends JFrame implements MouseListener {

    public AboutWindow() {
        // show splash screen image
        ImageIcon icon = new ImageIcon("resources/Splash.png");
        JLabel label = new JLabel(icon);
        getContentPane().add(label, BorderLayout.CENTER);

        // setup window correct
        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        setResizable(false);
        setUndecorated(true);

        pack();

        // place it at the right position
        Dimension windowDimension = Toolkit.getDefaultToolkit().getScreenSize();

        int x = (windowDimension.width-getWidth())/2;
        int y = (windowDimension.height-getHeight())/3;

        setLocation(x, y);

        // add the mouse listener
        addMouseListener(this);
    }

    @Override
    public void mouseClicked(MouseEvent me) {
        dispose();
    }

    @Override
    public void mousePressed(MouseEvent me) {
        // do nothing
    }

    @Override
    public void mouseReleased(MouseEvent me) {
        // do nothing
    }

    @Override
    public void mouseEntered(MouseEvent me) {
        // do nothing
    }

    @Override
    public void mouseExited(MouseEvent me) {
        // do nothing
    }
}

也许加上 setType(Type.UTILITY) 会更好 :) - Rahul
1
setLocationRelativeTo(null) 是将其放置在正确位置的快捷方式。 - Rahul

1
如何以编程方式再次显示此启动画面?
基于 AWT 的 SplashScreen API 提供了 getImageURL() 方法,这个方法在这方面可能会很有用。在屏幕上显示任何 GUI 元素之前,需要尽早获取 main() 中的 SplashScreen 实例。
当要显示图像时,有许多最适合不同任务和使用图像方式的可能性。其中一种最简单的方法是:
JLabel splashLabel = new JLabel(new ImageIcon(splashURL));

将其放入对话框或窗口中,如mKorbel所提到的,以在屏幕上显示。通常对于“闪屏式”图像,我们会选择纯AWT,但这种情况有些不同,因为GUI已经在屏幕上,所以Swing应该已经加载并准备好了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接