如何为java中已创建的新组件创建FXML文件,而不是将其添加到场景生成器中?
我是javaFX新手。我用java创建了一个自定义搜索框(扩展文本字段),请检查图像: 我用一个测试类对它进行了测试,它正在工作如何为java中已创建的新组件创建FXML文件,而不是将其添加到场景生成器中?,java,javafx,fxml,scenebuilder,Java,Javafx,Fxml,Scenebuilder,我是javaFX新手。我用java创建了一个自定义搜索框(扩展文本字段),请检查图像: 我用一个测试类对它进行了测试,它正在工作 我现在想知道是否可以创建其FXML文件,而不是将此组件添加到场景生成器?怎么做?提前感谢。如何将组件从JAR导入到SceneBuilder中 您可以将组件放入一个Jar中,并将其导入SceneBuilder。无需为组件创建FXML文件即可将其添加到SceneBuilder库面板 请参阅《JavaFX用户指南》的一节 从JAR或FXML文件导入自定义GUI组件: 从库
我现在想知道是否可以创建其FXML文件,而不是将此组件添加到场景生成器?怎么做?提前感谢。如何将组件从JAR导入到SceneBuilder中 您可以将组件放入一个Jar中,并将其导入SceneBuilder。无需为组件创建FXML文件即可将其添加到SceneBuilder库面板 请参阅《JavaFX用户指南》的一节 从JAR或FXML文件导入自定义GUI组件:
<?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>
组件先决条件
为了使流程正常运行,您需要确保以下几点:
谢谢你的回答。我确实将eclipse项目导出到一个jar文件中。但是场景生成器没有检测到任何组件?java文件是否需要其他信息?还是遵循一种结构?天哪!谢谢你这么做!我喜欢!真的谢谢!我会重新加工我的部件:D谢谢
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
);
}
}