【问题标题】:Building Jar For Custom UI Element JavaFX为自定义 UI 元素 JavaFX 构建 Jar
【发布时间】:2015-01-05 17:32:23
【问题描述】:

我按照以下博客的步骤进行操作,但是每当我要构建一个对话框时都无法使用 netbeans 创建一个 jar,就像这样

我关注的博客:

Adding a Custom JavaFX Component to Scene Builder 2.0

该项目包含以下三个文件

i) FXML 文件 ii) 控制器类 iii) 样式表

这是项目的树视图:

【问题讨论】:

    标签: java javafx fxml scenebuilder


    【解决方案1】:

    我似乎错过了加载 fxml 并设置和显示场景的主类。 在 NetBeans 中,使用 Run/Build Project (F11) 编译并创建 jar 文件。 使用运行/运行项目 (F6) 编译和运行您的项目。为此,您需要一个主类。

    链接中的教程对我有用。我做了以下操作:

    • 创建项目“Stackoverflow”(库)
    • 创建项目“Stackoverflow2”(使用该库的主应用程序)。 'Stackoverflow2' ist 使用库'Stackoverflow',您可以在'Libraries'节点下方看到。


    StackOverflow2.java 文件内容:

    package stackoverflow2;
    
    import java.io.IOException;
    import javafx.application.Application;
    import javafx.fxml.FXMLLoader;
    import javafx.scene.Parent;
    import javafx.scene.Scene;
    import javafx.stage.Stage;
    
    public class StackOverflow2 extends Application {
    
        @Override
        public void start(Stage primaryStage) throws IOException {
            Parent root = FXMLLoader.load(getClass().getResource("DemoScreen.fxml"));
            Scene scene = new Scene(root, 600, 400);
            primaryStage.setTitle("stackoverflow");
            primaryStage.setScene(scene);
    
            primaryStage.show();
        }
    
        public static void main(String[] args) {
            launch(args);
        }
    }
    

    DemoScreenController 文件内容:

    package stackoverflow2;
    
    import javafx.fxml.FXML;
    import stackoverflow.CommodityImageLabel;
    
    public class DemoScreenController {
    
        @FXML
        protected CommodityImageLabel commodityLabel1;
    }
    

    DemoScreen.fxml 文件内容:

    <?xml version="1.0" encoding="UTF-8"?>
    
    <?import stackoverflow.*?>
    <?import javafx.scene.control.*?>
    <?import java.lang.*?>
    <?import javafx.scene.layout.*?>
    
    <AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" 
                prefHeight="321.0" prefWidth="543.0" xmlns="http://javafx.com/javafx/8" 
                xmlns:fx="http://javafx.com/fxml/1" fx:controller="stackoverflow2.DemoScreenController">
       <children>
          <Label layoutX="72.0" layoutY="34.0" text="Main App" />
          <Separator layoutX="24.0" layoutY="78.0" prefHeight="1.0" prefWidth="499.0" />
          <CommodityImageLabel layoutX="43.0" layoutY="98.0" />
       </children>
    </AnchorPane>
    

    StackOverflow.java 的内容:

    package stackoverflow;
    
    import javafx.application.Application;
    import javafx.event.ActionEvent;
    import javafx.event.EventHandler;
    import javafx.scene.Scene;
    import javafx.scene.control.Button;
    import javafx.scene.layout.StackPane;
    import javafx.stage.Stage;
    
    public class StackOverflow extends Application {
    
        @Override
        public void start(Stage primaryStage) {
            Button btn = new Button();
            btn.setText("Say 'Hello World'");
            btn.setOnAction(new EventHandler<ActionEvent>() {
    
                @Override
                public void handle(ActionEvent event) {
                    System.out.println("Hello World!");
                }
            });
    
            StackPane root = new StackPane();
            root.getChildren().add(btn);
    
            Scene scene = new Scene(root, 300, 250);
    
            primaryStage.setTitle("Hello World!");
            primaryStage.setScene(scene);
            primaryStage.show();
        }
    
        public static void main(String[] args) {
            launch(args);
        }
    }
    

    我没有处理功能 - 所以代码非常基本。

    【讨论】:

    • 当我在上面的项目中添加一个主类时,我可以构建它。但是当我要在场景构建器中导入它时,它会显示一个空白页面。可以分享一下 StackOverflow.java 的内容吗?
    • 您是否尝试在 Scene Builder 中导入此内容?当我要执行此操作时,它会显示包含零项的导入对话框,因此我无法导入它。
    • 我从我的项目 StackOverflow 中导入了 jar 文件。是的,它奏效了。你可以从我的谷歌驱动器下载我的两个项目。这是链接:drive.google.com/file/d/0BxbJ93hsw2hkcC1HSGllV1FRdU0/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-23
    • 1970-01-01
    • 2015-07-04
    • 2020-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多