javafx-启动时初始化选项卡(选项卡窗格的)
我正在使用eclipse和scenebuilder 我已将主窗口定义如下: 我想用元素(在不同的fxml文件中定义的元素)的X(X在运行时计算)来定义“传出消息”选项卡 创建主窗口时:javafx-启动时初始化选项卡(选项卡窗格的),java,javafx,Java,Javafx,我正在使用eclipse和scenebuilder 我已将主窗口定义如下: 我想用元素(在不同的fxml文件中定义的元素)的X(X在运行时计算)来定义“传出消息”选项卡 创建主窗口时: private Stage primaryStage; private AnchorPane rootLayout; public void start(Stage primaryStage) { this.primaryStage = primaryStage; this.primar
private Stage primaryStage;
private AnchorPane rootLayout;
public void start(Stage primaryStage) {
this.primaryStage = primaryStage;
this.primaryStage.setTitle("ABC");
try {
// Load root layout from fxml file.
FXMLLoader loader = new FXMLLoader();
loader.setLocation(MainApp.class.getResource("MainLayout.fxml"));
rootLayout = (AnchorPane) loader.load();
// Show the scene containing the root layout.
Scene scene = new Scene(rootLayout);
primaryStage.setScene(scene);
primaryStage.show();
} catch (IOException e) {
e.printStackTrace();
}
}
如何更新上述“发送邮件”选项卡
谢谢您可以在FXML中使用传出消息
。这将在加载主fxml之前自动加载X个fxml。加载所有incude FXML后,准备并显示传出消息的FXML
更新
如果元素动态增加/减少,请使用传出消息的初始化()
来填充其中的元素,而不是使用
让我们考虑(你可能有你自己的逻辑)你的<代码>输出消息有一个<代码> vbox < /代码>,它将填充动态元素No(BurdPANE在这种情况下),它在<代码> x.fxml 中(你可以有不同的FXML,或者你可以在运行时创建自己的控件并添加它):
pubic类OutgoingMessages控制器实现可初始化{
@FXML
专用VBox VBox;
公共void初始化(java.net.URL位置,java.util.ResourceBundle资源){
//不管你的逻辑是什么,我在考虑一个动态数字
对于(int i=0;i是否Outgoing Messages
选项卡有自己的FXML
?我的目的是从X个相同的元素(每个元素都有自己的FXML文件)创建Outgoing message选项卡,我无法使用,因为我在运行时知道X(X可以在begging时为3,然后更改为9,…我已经更新了答案,如果您正在寻找其他东西,请告诉我,这很有帮助。但是如何为不同的选项卡创建不同的控制器?(正确的方法是使用fx:通过场景生成器包括并选择控制器,还是有更好的方法(更好的逻辑解决方案)?在fxml中定义控制器是标准方法。您也可以使用loader.setController()
通过加载器设置控制器。
pubic class OutgoingMessagesController implements Initializable {
@FXML
private VBox vbox;
public void initialize(java.net.URL location, java.util.ResourceBundle resources) {
//Whatever your logic is, I am considering a dynamic number here
for(int i=0; i<dynamicNumber; i++){
BorderPane borderPane = FXMLoader.load(getClass().getResource("X.fxml"));
vbox.getChildren.add(borderPane);
}
}
}