繁体   English   中英

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

[英]How does NetBeans' Splash Screen feature work?

NetBeans的新功能,并且刚刚注意到,在File >> Project Properties >> Application对话框中有一个标记为Splash Screen的文本字段,可用于指定程序启动时要显示的图像的路径。

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

感谢您的所有投入!

项目属性->应用程序->初始屏幕允许您将图像添加到应用程序。 此属性在MANIFEST.MF设置一个名为SplashScreen-Image:例如SplashScreen-Image: META-INF/GlassFish316x159.jpg此属性将自动使图像显示为初始屏幕。 它在NetBeans内部不起作用,必须在IDE外部运行。

有一个Splash Screen Beginner教程 ,其中详细介绍了如何使用它。 本教程已针对NetBeans 6.8完成,但将在本文发布时的最新版本7.2.1上运行。

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

要执行一个简单的启动画面(图像),可以在Java应用程序的命令行中指定它。

这是一个简单的例子

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

但是,如果需要进度条,则必须做一些复杂的事情,并自己编写一些代码。 这是通过以下方式完成的。

  1. 使用初始屏幕元素创建一个JWindow(或Window或未装饰的JFrame)组件
  2. 设置为可见
  3. 完成其余的Swing GUI启动代码
  4. 将JFrame设置为visible,然后立即将JWindow设置为visible(false)

这应该几乎立即显示启动画面,然后在应用程序完全加载后将其隐藏。

要查看一些初始屏幕代码,请在此处查看 链接中的实现仅显示如何使用-splash命令来实现您的目标,但这将为您提供一个良好的开端,其中包括您请求的进度条。

我不确定NetBeans是如何做到的,但是JRE从版本6开始就支持启动画面。请参见http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/splashscreen/

初始屏幕只是java.awt.Window或未经修饰的javax.swing.JFrame的实例。 要创建窗口,只需说出new Window(null) ,然后设置大小和位置(使用takeit可以计算屏幕中心在哪里),然后说出window.setVisible(true)

由于这是您自己的窗口,因此您可以执行所需的操作:设置布局,图像,将过程栏添加到SOUTH等。

您还可以使用JFrame:new JFrame()。setUndecorated(true)`

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

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();      
   }
}

干杯!

如果您的应用程序是使用NetBeans Platform构建的,则以下是有关启动屏幕自定义的教程: http : //wiki.netbeans.org/Splash_Screen_Beginner_Tutorial

还可以考虑在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

有一个与飞溅屏幕等效的Javafx示例。 但是,此初始屏幕基本上是一个java swing小程序,从javafx调用以显示给用户,并使用进度条和已加载内容的标题来模拟或多或少的Eclipse和Netbeans初始屏幕。 是链接。

您必须能够获取代码并分离出用Java swing编写的启动屏幕代码,并自己使用它。

这是一个自定义的Java摆动初始屏幕。 因此,为了使启动屏幕居中,它使用了传统的

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension labelSize = l.getPreferredSize();
setLocation(screenSize.width / 2 - (labelSize.width / 2), 
                  screenSize.height / 2 - (labelSize.height / 2));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM