NetBeans的启动画面功能如何工作?

时间:2011-02-12 11:59:12

标签: java netbeans splash-screen

NetBeans新手,只是注意到文件>>项目属性>>应用程序对话框有一个标有启动画面的文本字段,允许您指定在程序启动时要显示的图像的路径。

我想自定义我的启动画面的工作方式(添加进度条等),并希望从头开始编码,但不知道从哪里开始。基于Java / Swing的启动画面的最佳实践是什么?

感谢所有输入!

8 个答案:

答案 0 :(得分:2)

项目属性 - >申请 - >启动画面允许您将图像添加到应用程序。此属性在名为MANIFEST.MF的{​​{1}}中设置值,例如SplashScreen-Image:此属性将自动使图像显示为闪屏。它在NetBeans中不起作用,必须在IDE外部运行。

有一个教程Splash Screen Beginner Tutorial详细介绍了如何使用它。本教程是针对NetBeans 6.8完成的,但是可以在7.2.1上使用,这是本文发布时的最新版本。

答案 1 :(得分:0)

有几种方法可以做到这一点。

要执行简单的初始屏幕(图像),您可以在java应用程序的命令行中指定它。

Here is a simple example

java -splash:<file name> <class name>

但是,如果你想要一个进度条,你将不得不做一些更复杂的事情,并自己编写一些代码。这是通过以下方式完成的。

  1. 使用启动画面元素创建JWindow(或Window或未修饰的JFrame)组件
  2. 将其设为可见
  3. 执行Swing GUI启动代码的其余部分
  4. 将您的JFrame设置为可见,然后立即将JWindow设置为可见(false)
  5. 这应该立即显示启动,然后在应用程序完全加载后隐藏。

    要查看某些启动画面代码,请选择look here。链接中的实现仅显示如何使用-splash命令实现所需功能,但它将为您提供一个良好的开端,以便包括您请求的进度条。

答案 2 :(得分:0)

我不确定NetBeans是如何做到的,但自版本6以来JRE支持Splash Screens。请参阅http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/splashscreen/

答案 3 :(得分:0)

启动画面只是java.awt.Window或未修饰的javax.swing.JFrame的一个实例。 要创建窗口,只需说new Window(null),然后设置大小和位置(使用可以计算屏幕中心的位置),然后说出window.setVisible(true)

由于这是你自己的窗口,你可以做你想做的事情:设置布局,图像,向南方添加处理栏等。

你也可以使用JFrame:new JFrame()。setUndecorated(true)`

答案 4 :(得分:0)

我希望这会对你有所帮助,这是一个如何使用虚拟进度条创建一个简单的启动画面的小例子:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class SplashScreen extends JWindow
{

private static JProgressBar progressBar = new JProgressBar();
private static SplashScreen execute;
private static int count;   
private static Timer timer1;

public SplashScreen()
{                   
    Container container = getContentPane();
    container.setLayout(null);      

    JPanel panel = new JPanel();
    panel.setBorder(new javax.swing.border.EtchedBorder());
    panel.setBackground(new Color(255,255,255));
    panel.setBounds(10,10,348,150);
    panel.setLayout(null);
    container.add(panel);       

    JLabel label = new JLabel("Hello World!");
    label.setFont(new Font("Verdana",Font.BOLD,14));
    label.setBounds(85,25,280,30);
    panel.add(label);

    progressBar.setMaximum(50);
    progressBar.setBounds(55, 180, 250, 15);        
    container.add(progressBar);         
    loadProgressBar();                  
    setSize(370,215);
    setLocationRelativeTo(null);
    setVisible(true);
}
public void loadProgressBar()
{
    ActionListener al = new ActionListener()
    {
        public void actionPerformed(java.awt.event.ActionEvent evt)
        {
            count++;
            progressBar.setValue(count);
            if (count == 50){
                timer1.stop();
                execute.setVisible(false);

                            //load the rest of your application

            }               
        }};         
    timer1 = new Timer(50, al);
    timer1.start();
}

public static void main (String args[]){    
     execute = new SplashScreen();      
   }
}

干杯!

答案 5 :(得分:0)

如果您的应用程序是使用NetBeans平台构建的,那么这是一个关于启动画面自定义的教程:http://wiki.netbeans.org/Splash_Screen_Beginner_Tutorial

答案 6 :(得分:0)

还要考虑在NetBeans平台(基于Swing的RCP)之上构建应用程序。其中一个好处是:它带有一个带有进度条的可自定义闪屏。

示例进度条: http://platform.netbeans.org/tutorials/nbm-paintapp.html#wrappingUp

将Swing应用程序移植到NetBeans平台: http://platform.netbeans.org/tutorials/60/nbm-porting-basic.html

更多链接:

http://netbeans.org/features/platform/index.html

http://netbeans.org/features/platform/all-docs.html

答案 7 :(得分:0)

有一个示例Javafx相当于Splash屏幕。然而,这个启动画面基本上是一个java swing applet,它从javafx调用以显示给用户,并使用进度条和加载内容的标题模拟或多或少的eclipse和netbeans启动画面。 This是链接。

您必须能够获取代码并将用java swings编写的启动画面代码分开并自行使用。

这是一个自定义的java swings启动画面。因此,它使用传统的

来使闪屏居中
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension labelSize = l.getPreferredSize();
setLocation(screenSize.width / 2 - (labelSize.width / 2), 
                  screenSize.height / 2 - (labelSize.height / 2));