java - 如何在没有 FXML 的情况下创建自定义复合控件?
问题描述
我想创建代表复合控件的类。这将是包含其他控件(如 TextFields 等)的 HBox。
我知道可以像本教程中那样使用 FXML 来完成,但我想不使用它。
这是我解决这个问题
的方法:复合控制类
public class VInputText extends HBox {
private HBox hbox;
private FontAwesomeIconView icon;
private TextField textField;
private Label label;
public VInputText(double spacing) {
hbox = new HBox(spacing);
hbox.setAlignment(Pos.CENTER_LEFT);
hbox.setPrefSize(Control.USE_COMPUTED_SIZE, Control.USE_COMPUTED_SIZE);
icon = new FontAwesomeIconView();
icon.setGlyphName("TIMES");
icon.setSize("1.3em");
textField = new TextField();
label = new Label("<- my validated field");
hbox.getChildren().addAll(icon, textField, label);
}
}
FXML
<AnchorPane prefHeight="300.0" prefWidth="400.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="pl.edu.utp.wtie.controllers.AppController">
<children>
<VBox fx:id="vBox" prefHeight="300.0" prefWidth="400.0" spacing="5.0" />
</children>
</AnchorPane>
控制器
public class AppController {
@FXML
private VBox vBox;
@FXML
void initialize() {
System.out.println("AppController.java");
VInputText input = new VInputText(5);
vBox.getChildren().add(input);
}
}
问题是应用程序正在编译,但复合控件未显示在场景中。如果需要剩余的代码,那么我可以粘贴它。提前致谢。
解决方案
我正在粘贴某人解决的解决方案,但答案已被删除。而不是创建HBox应该使用这个关键字:
public class VInputText extends HBox {
private FontAwesomeIconView icon;
private TextField textField;
private Label label;
public VInputText(double spacing) {
this.setSpacing(spacing);
this.setAlignment(Pos.CENTER_LEFT);
this.setPrefSize(Control.USE_COMPUTED_SIZE, Control.USE_COMPUTED_SIZE);
icon = new FontAwesomeIconView();
icon.setGlyphName("TIMES");
icon.setSize("1.3em");
textField = new TextField();
label = new Label("<- my validated field");
this.getChildren().addAll(icon, textField, label);
}
}
推荐阅读
- wso2 - 在 WSO2 APIM 3.2.0 中创建新 API 时执行注册表事务操作时出错
- node.js - 如何更新 [Schema.Types.Mixed]?
- python - 制作 Pandas 数据框以显示基于日期的聚合值
- sql - 如何检查查询中的数据间隙
- python - turtle.onclick 和 turtle.onscreenckick() 的区别
- typescript - TypeError 无法在 typeScript Azure blob 上传中设置未定义的属性“大小”
- node.js - TypeError:无法读取未定义的不和谐机器人问题的属性“名称”
- javascript - 我在哪里渲染我的 nodejs MVC webapp 中的日历视图(以及如何获取它的数据)?
- html - 如何在 ACS Avocent 8048 中的串行查看器(终端)中复制和粘贴?
- node.js - 使用 Nodejs 在 mongodb 中使用搜索关键字从 2 个或更多集合中搜索数据