NetBeans的启动画面function如何工作?
NetBeans新手,只是注意到在文件>>项目属性>>应用程序对话框中有一个标记为启动屏幕的文本字段,允许您指定在程序启动时要显示的图像的路径。
我想自定义我的启动画面的工作方式(添加进度条等),并希望从头开始编码,但不知道从哪里开始。 基于Java / Swing的启动画面的最佳实践是什么?
感谢您的所有输入!
项目属性 – >应用程序 – >启动画面允许您将图像添加到应用程序。 此属性在MANIFEST.MF
设置一个名为SplashScreen-Image:
例如SplashScreen-Image: META-INF/GlassFish316x159.jpg
此属性将自动使图像显示为闪屏。 它在NetBeans中不起作用,必须在IDE外部运行。
有一个教程Splash Screen初学者教程详细介绍了如何使用它。 本教程是针对NetBeans 6.8完成的,但是可以在7.2.1上使用,这是本文发布时的最新版本。
我不确定NetBeans是如何做到的,但自版本6以来JRE支持Splash Screens。请参阅http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/splashscreen/
启动画面只是java.awt.Window或未修饰的javax.swing.JFrame的一个实例。 要创建窗口只需说new Window(null)
,然后设置大小和位置(使用可以计算屏幕中心的位置),然后说window.setVisible(true)
由于这是您自己的窗口,您可以执行您想要的操作:设置布局,图像,向SOUTH添加处理栏等。
您还可以使用JFrame:new JFrame()。setUndecorated(true)`
有几种方法可以做到这一点。
要执行简单的初始屏幕(图像),您可以在java应用程序的命令行中指定它。
这是一个简单的例子
java -splash:
但是,如果你想要一个进度条,你将不得不做一些更复杂的事情,并自己编写一些代码。 这是通过以下方式完成的。
- 使用启动画面元素创建JWindow(或Window或未修饰的JFrame)组件
- 将其设置为可见
- 做其余的Swing GUI启动代码
- 将JFrame设置为可见,然后立即将JWindow设置为可见(false)
这应该几乎立即显示启动,然后在应用程序完全加载后隐藏。
要查看一些启动画面代码,请查看此处 。 链接中的实现仅显示如何使用-splash命令实现所需function,但它将为您提供一个良好的开端,以包括您请求的进度条。
我希望这对您有所帮助,它是如何使用虚拟进度条创建自己的简单启动画面的一个小示例:
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平台(基于Swing的RCP)之上构建应用程序。 其中一个好处是:它带有一个带有进度条的可定制的闪屏。
示例进度条: http : //platform.netbeans.org/tutorials/nbm-paintapp.html#wrappingUp
将Swing应用程序移植到NetBeans平台: http : //platform.netbeans.org/tutorials/60/nbm-porting-basic.html
更多链接:
如果您的应用程序是使用NetBeans平台构建的,那么这是一个关于启动画面自定义的教程: http : //wiki.netbeans.org/Splash_Screen_Beginner_Tutorial
有一个示例Javafx相当于Splash屏幕。 然而,这个启动画面基本上是一个java swing applet,它从javafx调用以显示给用户,并使用进度条和加载内容的标题模拟或多或少的eclipse和netbeans启动画面。 这是链接。
您必须能够获取代码并分离出用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));