如何为java中已创建的新组件创建FXML文件,而不是将其添加到场景
我是
javaFX的新手.我在
java中创建了一个自定义的搜索框(扩展TextField),检查图像:
我用测试类测试了它,它正在工作. 我现在想知道是否可以创建其FXML文件而不是将此组件添加到场景构建器中?怎么做 ?提前致谢. 解决方法
如何将组件从JAR导入SceneBuilder
您可以将组件放在Jar中并将其导入SceneBuilder.您无需为组件创建FXML文件即可将其添加到SceneBuilder库面板. 请参阅JavaFX用户指南的Adding Custom Components to the Library部分.
注意,SceneBuilder还支持导入基于FXML的组件,而不仅仅是直接代码组件.本回答仅讨论仅导入不包含FXML的代码组件. 示例导入的组件使用情况 这是我使用上述方法导入SceneBuilder的自定义搜索字段组件. 顶部搜索面板位于Scene Builder设计窗格中,底部搜索面板是使用Scene Builder预览功能和搜索快乐的结果. 示例SceneBuilder生成的代码 此处包含由SceneBuilder根据设计生成的fxml文件.注意,这只是我用SceneBuilder创建的测试场景,用于测试已导入的组件 – 它不是组件导入过程本身的一部分. <?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> 样本(可导入)组件代码 导入的搜索框的代码是: 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 ); } } 组件先决条件 为了使流程有效,您需要确保以下几点: >您的组件类扩展了Node. 故障排除 如果您在尝试导入JAR时遇到问题,则在尝试进行JAR导入后,可以使用下面记录的JAR分析功能来帮助进行故障排除(这可能有助于或可能仅提供一些含糊不清的信息以使您更加困惑). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |