Показать SplashScreen программно - PullRequest
8 голосов
/ 20 ноября 2011

В настоящее время я работаю над приложением Java, и это мое первое приложение Java. Поэтому я создал файл Splash.png и поместил его в исходную папку resources приложения.

Мне уже удалось показать Splash-изображение при запуске с параметром JVM -splash:resources/Splash.png, но мой вопрос:

Как мне снова показать этот экран-заставку, но программно?

Мне нужна эта функция для пункта меню About.

Ответы [ 4 ]

4 голосов
/ 21 ноября 2011

Здесь является выдающимся примером использования заставок программно

Здесь также описан -splash.

2 голосов
/ 21 ноября 2011

Спасибо за вашу большую помощь.Я подумал, что на самом деле нет никакой функции, которая делает это, поэтому я просто закодировал JFrame, который я могу показать вместо экрана Splash при запуске.В случае, если кому-то может понадобиться код, я просто выложу его здесь:

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
    }
}
2 голосов
/ 20 ноября 2011

Используйте java.awt.SplashScreen класс.

Кстати, я не знал, что у JVM есть эта классная опция '-splash'.Итак, спасибо за информацию!

1 голос
/ 21 ноября 2011

Как я могу показать этот экран-заставку снова, но программно?

API-интерфейс на базе AWT SplashScreen, который использует эта функциональность, предлагает метод getImageURL(), который может быть полезен в этом отношении. Экземпляр SplashScreen необходимо получить в начале main(), прежде чем какие-либо элементы графического интерфейса будут видны на экране.

Когда приходит время отображать изображение, существует множество возможностей, наилучшим образом подходящих для различных задач и способов использования изображения. Один из самых простых способов показать это будет:

JLabel splashLabel = new JLabel(new ImageIcon(splashURL));

Вставьте это в диалог или окно, как упомянуто mKorbel, чтобы отобразить его на экране. Обычно для изображений типа «всплеск» мы хотели бы использовать чистый AWT, но эта ситуация немного отличается тем, что графический интерфейс уже отображается на экране, так что Swing, вероятно, будет загружен и готов.

...