[英]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>
但是,如果需要进度条,则必须做一些复杂的事情,并自己编写一些代码。 这是通过以下方式完成的。
这应该几乎立即显示启动画面,然后在应用程序完全加载后将其隐藏。
要查看一些初始屏幕代码,请在此处查看 。 链接中的实现仅显示如何使用-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
更多链接:
有一个与飞溅屏幕等效的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.