Làm thế nào để nhập khẩu một phần từ một JAR vào SceneBuilder
Bạn có thể đặt thành phần của bạn trong một Jar và nhập nó vào SceneBuilder. Bạn không cần tạo một tệp FXML cho thành phần của mình để thêm nó vào Bảng điều khiển Thư viện SceneBuilder.
Xem phần Adding Custom Components to the Library của hướng dẫn sử dụng JavaFX.
Để nhập các thành phần GUI tùy chỉnh từ một JAR hoặc FXML file:
Chọn nhập JAR/FXML lệnh tập tin từ menu Library panel, hoặc kéo JAR hoặc tập tin FXML trực tiếp từ tệp gốc của hệ thống của bạn người quản lý (Trình khám phá hoặc Trình tìm kiếm) và thả nó vào bảng điều khiển Thư viện
Trong cửa sổ hộp thoại Mở, điều hướng đến vị trí của tệp JAR hoặc FXML mà bạn muốn nhập. Hộp thoại nhập khẩu, tương tự như được hiển thị trong Figure 8-4, được hiển thị. Nội dung của tệp JAR là được kiểm tra và tất cả các lớp Java được xác định là các thành phần tùy chỉnh phù hợp được hiển thị trong cửa sổ hộp thoại. Nội dung của tệp FXML được phân tích cú pháp để đảm bảo rằng thành phần được thêm là hợp lệ và độc lập.
Từ cửa sổ hộp thoại Nhập, chọn hoặc bỏ chọn các mục từ danh sách của các mục mà bạn có thể nhập.
Nhấp vào Thành phần nhập. Các mục nhập khẩu được thêm vào phần Tuỳ chỉnh của bảng điều khiển Thư viện. Chúng có thể được sử dụng ngay lập tức và họ tồn tại trong thư viện ngay cả sau khi Cảnh Builder được khởi động lại
Note, SceneBuilder cũng hỗ trợ nhập khẩu các linh kiện FXML dựa chứ không chỉ các thành phần đang thẳng. Câu trả lời này chỉ thảo luận về việc nhập mã chỉ các thành phần không chứa FXML.
Sample nhập khẩu phần Cách sử dụng
Dưới đây là một thành phần lĩnh vực tìm kiếm tùy chỉnh mà tôi nhập khẩu vào SceneBuilder sử dụng phương pháp nêu trên.
Bảng tìm kiếm hàng đầu là trong cửa sổ thiết kế Scene Builder, bảng điều khiển tìm kiếm dưới cùng là kết quả của việc sử dụng chức năng xem trước Scene Builder và tìm kiếm hạnh phúc.
mẫu SceneBuilder tạo Mã
File fxml được tạo ra bởi SceneBuilder dựa trên thiết kế được đưa vào đây. Lưu ý, đây chỉ là một cảnh thử nghiệm mà tôi đã tạo với SceneBuilder để kiểm tra thành phần đã được nhập - nó không phải là một phần của quá trình nhập thành phần.
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.text.*?>
<?import org.jewelsea.*?>
<?import javafx.geometry.*?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<VBox maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" spacing="10.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
<children>
<Label text="Search Field Import Test">
<font>
<Font size="16.0" />
</font>
</Label>
<SearchField />
</children>
<padding>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</padding>
</VBox>
mẫu (có thể nhập cảng) Mã Component
Mã cho hộp tìm kiếm được nhập khẩu là:
package org.jewelsea;
import javafx.geometry.Insets;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.HBox;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
public class SearchField extends StackPane {
private final TextField textField;
private final Button searchButton;
private final Label searchResults;
public SearchField() {
textField = new TextField();
textField.setPromptText(
"Search Text"
);
searchButton = new Button("Search");
searchResults = new Label();
VBox layout = new VBox(
20,
new HBox(
10,
textField,
searchButton
),
searchResults
);
layout.setPadding(new Insets(10));
searchButton.setOnAction(event ->
searchResults.setText(
"Search result for " + textField.getText()
)
);
getChildren().setAll(
layout
);
}
}
Component Pre-kiện tiên quyết
Để cho quy trình hoạt động, có một vài điều bạn cần đảm bảo:
- Lớp thành phần của bạn mở rộng Nút.
- Lớp thành phần của bạn không có hàm tạo đối số.
- Lớp thành phần của bạn và không có hàm tạo đối số nào là công khai.
- Lớp thành phần của bạn nằm trong gói (ví dụ: org.jewelsea) - nó không thể không có gói.
- Lớp thành phần của bạn được đóng gói trong tệp JAR đã được nhập vào SceneBuilder như được mô tả ở trên.
đáp thắc mắc
Nếu bạn đang gặp vấn đề nhập khẩu JAR, sau khi bạn đã cố gắng một khẩu JAR, bạn có thể sử dụng chức năng phân tích JAR tài liệu dưới đây để giúp khắc phục sự cố (mà có thể giúp đỡ hoặc chỉ có thể cung cấp một số thông tin khó hiểu để gây nhầm lẫn cho bạn nhiều hơn).
Cảm ơn câu trả lời của bạn. Tôi đã xuất dự án eclipse vào một tệp jar. nhưng nhà xây dựng cảnh không phát hiện bất kỳ thành phần nào? hiện các tập tin java cần bất kỳ thông tin bổ sung? hoặc theo một cấu trúc? – ben
OH MY GOD! CẢM ƠN CHO TẤT CẢ NÀY! TÔI THÍCH NÓ ! Rất cảm ơn ! tôi sẽ làm lại các thành phần của tôi: D cảm ơn – ben