为自定义 UI 元素 JavaFX 构建 Jar
Building Jar For Custom UI Element JavaFX
我按照以下博客的步骤进行操作,但是每当我要构建一个对话框时都无法使用 netbeans 创建一个 jar 是这样的
我关注的博客:
Adding a Custom JavaFX Component to Scene Builder 2.0
项目包含以下三个文件
i) FXML 文件
ii) 控制器 Class
iii) 样式 Sheet
这是项目的树视图:
我好像错过了一个主要的 class 加载 fxml 并设置和显示场景的地方。
在 NetBeans 中使用 Run/Build Project (F11) 编译并创建一个 jar 文件。
使用 Run/Run 项目 (F6) 编译和 运行 您的项目。为此,您需要一个主 class.
link 中的教程适合我。我做了以下操作:
- 创建项目'Whosebug'(库)
- 创建项目'Whosebug2'(使用库的主应用程序)。 'Whosebug2' ist 使用库 'Whosebug' 正如您在 'Libraries' 节点下方看到的那样。
文件内容 Whosebug2.java:
package Whosebug2;
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 Whosebug2 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("Whosebug");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
文件 DemoScreenController 的内容:
package Whosebug2;
import javafx.fxml.FXML;
import whosebug.commodityImageLabel;
public class DemoScreenController {
@FXML
protected CommodityImageLabel commodityLabel1;
}
文件内容 DemoScreen.fxml:
<?xml version="1.0" encoding="UTF-8"?>
<?import Whosebug.*?>
<?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="Whosebug2.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>
Whosebug.java的内容:
package Whosebug;
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 Whosebug 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);
}
}
我没有注意功能 - 所以代码非常基础。
我按照以下博客的步骤进行操作,但是每当我要构建一个对话框时都无法使用 netbeans 创建一个 jar 是这样的
我关注的博客:
Adding a Custom JavaFX Component to Scene Builder 2.0
项目包含以下三个文件
i) FXML 文件 ii) 控制器 Class iii) 样式 Sheet
这是项目的树视图:
我好像错过了一个主要的 class 加载 fxml 并设置和显示场景的地方。 在 NetBeans 中使用 Run/Build Project (F11) 编译并创建一个 jar 文件。 使用 Run/Run 项目 (F6) 编译和 运行 您的项目。为此,您需要一个主 class.
link 中的教程适合我。我做了以下操作:
- 创建项目'Whosebug'(库)
- 创建项目'Whosebug2'(使用库的主应用程序)。 'Whosebug2' ist 使用库 'Whosebug' 正如您在 'Libraries' 节点下方看到的那样。
文件内容 Whosebug2.java:
package Whosebug2;
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 Whosebug2 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("Whosebug");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
文件 DemoScreenController 的内容:
package Whosebug2;
import javafx.fxml.FXML;
import whosebug.commodityImageLabel;
public class DemoScreenController {
@FXML
protected CommodityImageLabel commodityLabel1;
}
文件内容 DemoScreen.fxml:
<?xml version="1.0" encoding="UTF-8"?>
<?import Whosebug.*?>
<?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="Whosebug2.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>
Whosebug.java的内容:
package Whosebug;
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 Whosebug 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);
}
}
我没有注意功能 - 所以代码非常基础。