2013-02-09 58 views
5

tôi tự hỏi như thế nào người ta có thể sử dụng fx:include kết hợp với JavaFX Scene Builder, do đó:JavaFX Scene Builder và fx: include

Hãy tưởng tượng tôi có một BorderPane (file borderpane.fxml). Trong phần trung tâm, tôi muốn đặt một Label, tuy nhiên sẽ được định nghĩa trong một tệp FXML riêng biệt, ví dụ: label.fxml.

Vấn đề đầu tiên của số này: Vì label.fxml sẽ được tích hợp vào một vùng chứa (BorderPane), nó không cần chính nó. Tuy nhiên, SceneBuilder chỉ cung cấp tùy chọn để tạo bố cục là một vùng chứa?

Thứ hai vấn đề: Tôi có thể tạo ra các label.fxml bằng tay và sau đó điều chỉnh borderpane.fxml bằng tay để bao gồm các label.fxml. Sau đó tôi có thể tải tệp borderpane.fxml bằng SceneBuilder mà không gặp bất kỳ sự cố nào. Tuy nhiên khi tôi bây giờ thay đổi nội dung của nhãn và chọn "Save", không phải là label.fxml được sửa đổi, nhưng thay vào đó là borderpane.fxml được sửa đổi như sau:

# borderpane.fxml 
<fx:include source="label.fxml" text="the new label text" /> 

Văn bản nhãn mới nên được ghi vào label.fxml, chưa borderpane.fxml, những gì hiện đang thực hiện.

  • Tôi có làm gì sai không?

  • Trình SceneBuilder không có ý định sử dụng kết hợp với fx: include?

  • Tôi muốn Bộ điều khiển riêng cho các phần của GUI, tôi cho rằng điều này khá hợp lý/bình thường, vì vậy kịch bản sử dụng thực tế này có thể được hỗ trợ bởi SceneBuilder?

Trả lời

1

Tôi không biết bất kỳ phương pháp thêm nút nào vào phần mở rộng FXML được nhúng bằng trình tạo cảnh.

Tuy nhiên, bạn có thể thực hiện điều này bằng cách sử dụng mã Java. Nếu borderpane.fxml của bạn đã định nghĩa một bộ điều khiển với một phương thức được gọi là #setCentre để thêm một nút thì bạn có thể tải label.fxml trong bộ điều khiển cha của borderpane.fxml và thêm nhãn bằng cách sử dụng phương thức mà bạn đã định nghĩa.

Một câu hỏi là bạn đưa ra một ví dụ đơn giản hay bạn thực sự đang tạo các tệp FXML cho các nhãn và các khung biên giới? Nếu vậy thì tôi nghĩ điều này sẽ thực sự làm cho chương trình của bạn phức tạp hơn là chỉ thêm các điều khiển vào một điều khiển lớn hơn.

6

Có vẻ như là Scene Builder 2 đã giải quyết cả vấn đề bạn đã đề cập.

Vấn đề đầu tiên (đã giải quyết): nút gốc không phải là Pane. Ví dụ, nó có thể là một Label

Thứ hai (giải quyết) vấn đề: Thực đơn File > Include > FXML... có thể được sử dụng để bao gồm một tập tin FXML bên ngoài. Không thể chỉnh sửa tệp được bao gồm. Dù sao, nhấp chuột phải vào nút trong chế độ xem Tài liệu sẽ hiển thị mục menu "Chỉnh sửa tệp được bao gồm", mở ra một cửa sổ Trình tạo cảnh cho tệp đó.

Kết luận, Trình tạo cảnh 2 xử lý chính xác phần tử fx:include.

+0

Giải thích hay nhưng có một vấn đề: nếu bạn bao gồm tệp fxml, bạn không thể kéo tệp đó vào trình tạo scence để đặt nó ở bất cứ nơi nào bạn muốn trong ứng dụng của mình! – SlimenTN

Các vấn đề liên quan