JavaFX TabPane的选项卡内容仍然出现在其他选项卡中(在对话框内)

时间:2016-07-14 02:49:45

标签: java javafx

我正在使用Java 8(1.8.0_60)处理JavaFX独立应用程序,并且我正面临TabPane的问题(没有成功,但仍然搜索了很多)。

我有一个视图(使用JavaFX Scene Builder 2.0制作的FXML表单),它有一个带有两个Tabs的TabPane。我打开这个表单作为一个对话框(它有自己的控制器),以便弹出"弹出"表格没有退出主表格。问题是"标签1和#34;中的一些组件。出现在"标签2"当我切换它们。因为我的应用程序中有很多其他选项卡(对话框中没有人)并且从未遇到过这个问题,所以我猜这与我在对话框中使用TabPane这一事实有关

A print of the issue, notice that "Label of Tab 1" is from Tab 1 but is appearing in Tab 2

以下是一些摘录,以提供更多问题背景:

  1. 对话框控制器(让我们称之为DialogController):

    private FXMLLoader fxmlLoader;
    private Stage dialogStage;
    
    public DialogController() {
        FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource(resourcePath));
        fxmlLoader.setRoot(this);
        fxmlLoader.setController(this);
        fxmlLoader.load();
    
        Stage dialogStage = new Stage();
        dialogStage.setTitle(stageTitle);
        dialogStage.initModality(Modality.WINDOW_MODAL);
        dialogStage.initOwner(getMainApplicationStage());
        dialogStage.setScene(new Scene(fxmlLoader.load()));
    }
    
  2. 主控制器:

    DialogController priceController = new DialogController();
    dialogController.getDialogStage().showAndWait();
    
  3. FXML文件:

    <?xml version="1.0" encoding="UTF-8"?>
    
    <?import javafx.scene.control.*?>
    <?import java.lang.*?>
    <?import javafx.scene.layout.*?>
    
    <?xml version="1.0" encoding="UTF-8"?>
    
    <?import javafx.scene.control.*?>
    <?import java.lang.*?>
    <?import javafx.scene.layout.*?>
    
    <fx:root maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" type="AnchorPane" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
       <children>
          <TabPane prefHeight="400.0" prefWidth="600.0" tabClosingPolicy="UNAVAILABLE" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
            <tabs>
              <Tab text="Untitled Tab 1">
                <content>
                  <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0">
                         <children>
                            <Label layoutX="24.0" layoutY="23.0" text="Label of Tab1" />
                         </children>
                      </AnchorPane>
                </content>
              </Tab>
              <Tab text="Untitled Tab 2">
                <content>
                  <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0">
                         <children>
                            <Label layoutX="38.0" layoutY="62.0" text="Label of Tab 2" />
                         </children>
                      </AnchorPane>
                </content>
              </Tab>
            </tabs>
          </TabPane>
       </children>
    </fx:root>
    
  4. 我做错了什么或忘记在对话框中打开表单的内容?

0 个答案:

没有答案