小编tar*_*ion的帖子

打包非模块化JavaFX应用程序

我有一个Java 8应用程序,它使用JavaFX,主类扩展了 javafx.application.Application.目前,我将它作为胖罐提供,它在Oracle Java 8上运行良好.

现在我希望它能够在OpenJDK 11上运行.要添加JavaFX,我已经将org.openjfx中的工件添加到类路径中,并将它们包含在胖jar中.如果我从命令行启动我的jar,我明白了

Error: JavaFX runtime components are missing, and are required to run this
application
Run Code Online (Sandbox Code Playgroud)

我找到了解决此问题的两种可能方法:

  1. 脏的:编写一个特殊的启动器,它不会扩展应用程序并绕过模块检查.请参阅http://mail.openjdk.java.net/pipermail/openjfx-dev/2018-June/021977.html
  2. 干净的:将--module-path和--add-modules添加到我的命令行.这个解决方案的问题是,我希望我的最终用户能够通过双击启动应用程序.

虽然我可以使用1.作为一种解决方法,但我想知道目前(OpenJDK 11)构建/交付非模块化JavaFX应用程序的可执行胖罐的方法.有人可以帮忙吗?

java javafx maven openjfx javafx-11

11
推荐指数
1
解决办法
3377
查看次数

JavaFX:BorderPane 的布局问题 - 错误还是用户错误?

我在 BorderPane(的中心)内遇到 FlowPane 的奇怪行为。 例子

如果我放大或缩小窗口的宽度,一切都很好。导致这种效果的只是一个狭窄的宽度 +- 5 个像素。重现代码:

public class LayoutBugTest extends Application {

    public static void main(String[] args) {
        launch(args);
    }
    
    public void start(Stage stage) {
        TextField tf1 = new TextField("");
        TextField tf2 = new TextField("");
        TextField tf3 = new TextField("");
        tf1.setPrefColumnCount(20);
        tf2.setPrefColumnCount(10);
        tf3.setPrefColumnCount(10);     
        FlowPane flow = new FlowPane(10,10, tf1,tf2,tf3);
        
        BorderPane box = new BorderPane();
        box.setTop(new Label("Heading"));
        box.setCenter(flow);
        box.setStyle("-fx-border-width: 2px; -fx-border-color: black; -fx-border-radius: 1em; -fx-padding: 5px;");
        
        VBox anyLayout = new VBox(5, new Label("Before"), box, new Label("After"));
        
        Scene scene = …
Run Code Online (Sandbox Code Playgroud)

javafx javafx-11

5
推荐指数
1
解决办法
69
查看次数

标签 统计

javafx ×2

javafx-11 ×2

java ×1

maven ×1

openjfx ×1