我想为JavaFX应用程序创建一个自定义加载屏幕.不希望用户看到Java咖啡杯图标,我想在那里放置我自己的图形!
我已经发现了如何提供静态图像,甚至是动画GIF,但我对类似Flash的屏幕更感兴趣,我可以指定图像的状态在某些百分比下的样子.
有任何想法吗?
对于 JavaFX2,您可以设置自定义预加载器。您可以完全控制当时的场景。我个人没有使用过它们,但这可能就是您想要的。 http://docs.oracle.com/javafx/2/deployment/preloaders.htm
我使用本机 JavaFX API 创建了一个非常简单的预加载器屏幕。这里解释了如何做到这一点: https: //docs.oracle.com/javafx/2/deployment/preloaders.htm(旧但可行的示例)-这是较新的并且似乎是相同的:https://docs。 oracle.com/javase/8/docs/technotes/guides/deploy/preloaders.html(较新的页面和JavaFX版本,但我没有看到区别)。
由于页面格式的原因,较旧的链接更易于阅读。
package YOUR_PACKAGE_NAME;
import javafx.application.Application;
/**
* Minimal reproducible example (MRE) - Example of a simple JavaFX preloader.
* Java Main class for starting up the JavaFX application with a call to launch MainApplication.
* @author Remzi Cavdar - ict@remzi.info - <a href="https://github.com/Remzi1993">@Remzi1993</a>
*/
public class Main {
public static void main(String[] args) {
/*
* The following Java system property is important for JavaFX to recognize your custom preloader class.
* Which should extend javafx.application.Preloader.
*/
System.setProperty("javafx.preloader", Preloader.class.getName());
// Launch the main JavaFX application class.
Application.launch(MainApplication.class, args);
}
}
Run Code Online (Sandbox Code Playgroud)
package YOUR_PACKAGE_NAME;
import javafx.scene.Scene;
import javafx.scene.control.ProgressBar;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
/**
* Minimal reproducible example (MRE) - Example of a simple JavaFX preloader class.
* @author Remzi Cavdar - ict@remzi.info - <a href="https://github.com/Remzi1993">@Remzi1993</a>
*/
public class Preloader extends javafx.application.Preloader {
private ProgressBar progressBar;
private Stage stage;
private Scene createPreloaderScene() {
progressBar = new ProgressBar();
BorderPane borderPane = new BorderPane();
borderPane.setCenter(progressBar);
return new Scene(borderPane, 800, 600);
}
@Override
public void start(Stage stage) throws Exception {
this.stage = stage;
// I also recommend to set app icon: stage.getIcons().add();
stage.setTitle("YOUR TILE HERE");
stage.setScene(createPreloaderScene());
stage.show();
}
@Override
public void handleProgressNotification(ProgressNotification pn) {
progressBar.setProgress(pn.getProgress());
}
@Override
public void handleStateChangeNotification(StateChangeNotification evt) {
if (evt.getType() == StateChangeNotification.Type.BEFORE_START) {
stage.hide();
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8592 次 |
| 最近记录: |