<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和控制器,我必须做什么?事实上,我正在寻找一种方法来管理一个选项卡窗格,其中包含几个选项卡和每个选项卡中的几个控件,但即使在实现这个简单示例时,我也遇到了问题。
答案 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>