为什么这段代码不能生成选项卡窗格?

时间:2016-10-20 21:01:56

标签: javafx fxml

    <TabPane fx:controller="application.FXMLcontrolor" prefHeight="400.0" prefWidth="600.0" tabClosingPolicy="ALL_TABS" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8.0.65">
  <tabs>
    <Tab text="Untitled Tab 1">
      <content>
        <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0" />
      </content>
    </Tab>
    <Tab text="Untitled Tab 2">
      <content>
        <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0" />
      </content>
    </Tab>
  </tabs>
</TabPane>

并且控制器就像这样

    public class FXMLcontrolor extends TabPane
{

    public FXMLcontrolor()
    {
        FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource( "FXMLdocument.fxml"));
        fxmlLoader.setRoot(this);
        fxmlLoader.setController(this);

        try
        {
            fxmlLoader.load();
        }
        catch (IOException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
}

主要是这样的:

 public class Main extends Application
{
    @Override
    public void start(Stage stage) throws IOException
    {

        FXMLcontrolor mainControllor=new FXMLcontrolor();

        stage.setScene(new Scene(mainControllor));
        stage.setTitle("Custom Control");
        stage.setWidth(400);
        stage.setHeight(400);
        stage.show();
    }

    public static void main(String[] args)
    {
        launch(args);
    }
}

并且结果中没有标签,为什么这不显示任何标签?我使用FXML来创建UI和控制器,我必须做什么?事实上,我正在寻找一种方法来管理一个选项卡窗格,其中包含几个选项卡和每个选项卡中的几个控件,但即使在实现这个简单示例时,我也遇到了问题。

enter image description here

1 个答案:

答案 0 :(得分:2)

如果您使用

动态设置根目录
fxmlLoader.setRoot(...);

您需要使用<fx:root>元素作为FXML的根元素。请参阅documentation

此外,如果您使用

在代码中设置控制器
fxmlLoader.setController(...);

你应该在FXML文件中指定fx:controller属性。所以你的FXML文件应该是

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.TabPane?>
<?import javafx.scene.control.Tab?>
<?import javafx.scene.layout.AnchorPane?>

<fx:root type="TabPane" prefHeight="400.0" prefWidth="600.0" tabClosingPolicy="ALL_TABS" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8.0.65">
  <tabs>
    <Tab  text="Untitled Tab 1">
      <content>
        <AnchorPane  minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0" />
      </content>
    </Tab>
    <Tab text="Untitled Tab 2">
      <content>
        <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0" />
      </content>
    </Tab>
  </tabs>
</fx:root>
相关问题