gpt4 book ai didi

java - 如何在没有 FXML 的情况下创建自定义复合控件?

转载 作者:行者123 更新时间:2023-12-02 06:08:24 24 4
gpt4 key购买 nike

我想创建代表复合控件的类。这将是包含其他控件(如 TextFields 等)的 HBox。

我知道可以使用 FXML 来完成此操作,如 tutorial 所示,但我想在没有它的情况下完成它。

这是我解决这个问题的方法:

复合控件类

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>

Controller

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,而应使用 this 关键字:

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);
}
}

关于java - 如何在没有 FXML 的情况下创建自定义复合控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55927670/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com