Динамические заставки для моего Java-приложения - PullRequest
1 голос
/ 31 мая 2011

Я хочу создать заставку для моего Java-приложения.Мне удалось сделать это с помощью инструмента по умолчанию NetBeans, который позволяет мне вставить некоторое изображение. Но я хочу, чтобы там было что-то «живое», например индикатор выполнения, показывающий состояние загрузки приложения, некоторый динамический текст и т. Д.

Как мне это сделать?Что мне нужно знать, чтобы начать делать что-то подобное?

Ответы [ 2 ]

2 голосов
/ 31 мая 2011

Вот учебник по Java, который поможет вам точно понять, что вы хотите сделать. Вы можете установить изображение в командной строке так, чтобы оно показывалось немедленно, затем вы можете манипулировать им после инициализации JVM для добавления текста, индикаторов выполнения и т. Д.

http://download.oracle.com/javase/tutorial/uiswing/misc/splashscreen.html

1 голос
/ 31 мая 2011

Хитрость заключается в том, чтобы создать заставку с использованием Swing, а затем вызвать с помощью Java отражение метод, который находится в другом файле .java, который загружает приложение. По завершении загрузки утилизируйте заставку.

После проверки кода вы поймете, как он работает, и теперь настроите его по-своему.

Вот код:

import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JDialog;

/**
 *
 * @author martijn
 */
public class Splash {

    public static void splash() {
        try {
            final BufferedImage img = ImageIO.read(Splash.class.getResourceAsStream("/path/to/your/splash/image/splash.png"));
            JDialog dialog = new JDialog() {

                @Override
                public void paint(Graphics g) {
                    g.drawImage(img, 0, 0, null);
                }
            };
            // use the same size as your image
            dialog.setPreferredSize(new Dimension(450, 300)); 
            dialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
            dialog.setUndecorated(true);
            dialog.pack();
            dialog.setLocationRelativeTo(null);
            dialog.setVisible(true);
            dialog.repaint();
            try {
                // Now, we are going to init the look and feel:

                Class uim = Class.forName("javax.swing.UIManager");
                uim.getDeclaredMethod("setLookAndFeel", String.class).invoke(null, (String) uim.getDeclaredMethod("getSystemLookAndFeelClassName").invoke(null));

                // And now, we are going to invoke our loader method:
                Class clazz = Class.forName("yourpackage.YourClass");
                dialog.dispose();
                // suppose your method is called init and is static
                clazz.getDeclaredMethod("init").invoke(null);
            } catch (Exception ex) {
                ex.printStackTrace();
            }
            dialog.dispose();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}
...