JavaFX-选项卡中的FXML

生姜

我尝试将“ main.fxml”文件显示到与其他.fxml文件连接的TapPane中。但不幸的是抛出异常。怎么了?


它是tabs.fxml的控制器

标签类

package View;

import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.control.Tab;
import javafx.scene.control.TabPane;

import java.io.IOException;
import java.net.URL;
import java.util.ResourceBundle;

public class Tabs implements Initializable {

    @FXML
    TabPane tabPane = null;

    @Override
    public void initialize(URL url, ResourceBundle resourceBundle) {
        try {
            tabPane.getTabs().addAll((Tab) FXMLLoader.load(this.getClass().getResource("main.fxml")));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

tabs.fxml

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

<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>

<AnchorPane
    maxHeight="-Infinity"
    maxWidth="-Infinity"
    minHeight="-Infinity"
    minWidth="-Infinity"
    prefHeight="400.0"
    prefWidth="600.0"
    xmlns="http://javafx.com/javafx/8"
    xmlns:fx="http://javafx.com/fxml/1"
    fx:controller="View.Tabs">
   <children>
      <TabPane
        fx:id="tabPane"
        prefHeight="400.0"
        prefWidth="600.0"
        tabClosingPolicy="UNAVAILABLE">
        <tabs>
          <Tab text="Untitled Tab 1" >
            <content>

            </content>
          </Tab>
        </tabs>
      </TabPane>
   </children>
</AnchorPane>

它是main.fxml它包含一个表单和一个按钮。我尝试通过Tab类在我的“ tab.fxml ”中显示此表单

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

<?import java.lang.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>

<AnchorPane
    id="main"
    maxHeight="-Infinity"
    maxWidth="-Infinity"
    minHeight="-Infinity"
    minWidth="-Infinity"
    prefHeight="400.0"
    prefWidth="600.0"
    xmlns="http://javafx.com/javafx/8"
    xmlns:fx="http://javafx.com/fxml/1"
    fx:controller="View.Chat">
   <children>
  <AnchorPane
        minHeight="0.0"
        minWidth="0.0"
        prefHeight="180.0"
        prefWidth="200.0" />
      <TextArea
        fx:id="text"
        layoutX="14.0"
        layoutY="317.0"
        prefHeight="69.0"
        prefWidth="435.0" />
      <TextArea
        fx:id="chatField"
        editable="false"
        layoutX="14.0"
        layoutY="14.0"
        prefHeight="289.0"
        prefWidth="435.0" />
      <Button
        fx:id="send"
        layoutX="486.0"
        layoutY="334.0"
        mnemonicParsing="false"
        onAction="#sendMessage"
        prefHeight="30.0
        prefWidth="66.0"
        text="Send" />
   </children>
</AnchorPane>

但是抛出异常:

无法将javafx.scene.layout.AnchorPane强制转换为javafx的View.Tabs.initialize(Tabs.java:21)上的javafx.scene.control.Tab /E:/JavaFXTest/out/production/JavaFXTest/View/tabs.fxml .fxml.FXMLLoader.load(FXMLLoader.java:2193)位于javafx.fxml.FXMLLoader.load(FXMLLoader.java:2069)位于javafx.fxml.FXMLLoader.load(FXMLLoader.java:2830)位于javafx.fxml.FXMLLoader在javafx.fxml.FXMLLoader.load(FXMLLoader.java:2795)处加载(FXMLLoader.java:2809)

詹姆斯·D

错误消息告诉您问题所在:

无法将javafx.scene.layout.AnchorPane强制转换为javafx.scene.control.Tab

tab.fxml文件的根元素是AnchorPane,但是您尝试将其视为Tab

(Tab) FXMLLoader.load(this.getClass().getResource("main.fxml"))

您可以更改FXML文件,以便根元素是制表符:

<Tab xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="View.Chat">

<AnchorPane> id="main" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" >
   <children>
  <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0" />
      <TextArea fx:id="text" layoutX="14.0" layoutY="317.0" prefHeight="69.0" prefWidth="435.0" />
      <TextArea fx:id="chatField" editable="false" layoutX="14.0" layoutY="14.0" prefHeight="289.0" prefWidth="435.0" />
      <Button fx:id="send" layoutX="486.0" layoutY="334.0" mnemonicParsing="false" onAction="#sendMessage" prefHeight="30.0" prefWidth="66.0" text="Send" />
   </children>
</AnchorPane>
</Tab>

或者

您可以Tab在控制器中创建Java代码:

@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
    try {
        Tab tab = new Tab();
        tabPane.getTabs().add(tab);
        tab.setContent((Node) FXMLLoader.load(this.getClass().getResource("main.fxml")));
    } catch (IOException e) {
        e.printStackTrace();
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用FXML在JavaFX中动态创建选项卡?

来自分类Dev

Javafx如何动态地向fxml文件中的现有选项卡添加内容

来自分类Dev

javafx在新选项卡中动态打开新的fxml文件

来自分类Dev

JAVAFX FXML:动态创建的选项卡中的动态 ImageView 不显示

来自分类Dev

Javafx如何动态地将内容添加到fxml文件中的现有选项卡

来自分类Dev

识别JavaFX选项卡

来自分类Dev

JavaFX 8-选项卡和选项卡,每个选项卡具有单独的FXML和控制器

来自分类Dev

JavaFX在单击时添加带有fxml的新选项卡

来自分类Dev

JavaFx-SceneBuilder中的选项卡顺序

来自分类Dev

在tabpane javafx中创建垂直选项卡

来自分类Dev

更改JavaFx选项卡的默认外观

来自分类Dev

更改JavaFx选项卡的默认外观

来自分类Dev

JavaFX Scene Builder定制选项卡

来自分类Dev

JavaFX 禁用选项卡导航

来自分类Dev

每次单击按钮时,如何在选项卡的文本中添加1?在JavaFX中

来自分类Dev

当JavaFX中的选定选项卡更改时,如何聚焦特定节点?

来自分类Dev

如何在JavaFX中以编程方式切换选项卡

来自分类Dev

Netbeans 8.0的Java Platform Manager中缺少JavaFX选项卡

来自分类Dev

在关闭 JAVAFX 时检查 TabPane 中是否没有选项卡

来自分类Dev

在另一个控制器中关闭选项卡 - JavaFX

来自分类Dev

将按钮添加到选项卡和选项卡区域JavaFX

来自分类Dev

javafx的先前选项卡会影响最新的选项卡

来自分类Dev

通过可编辑单元格的JavaFX选项卡

来自分类Dev

JavaFX ContextMenu加速器从错误的选项卡启动

来自分类Dev

JavaFX 8 TextArea松散地关注选项卡

来自分类Dev

Javafx TabPane具有多行选项卡

来自分类Dev

JavaFX,在选项卡控制器之间传递参数

来自分类Dev

在JavaFX上动态添加和填充选项卡

来自分类Dev

JavaFX选项卡窗格未显示

Related 相关文章

  1. 1

    如何使用FXML在JavaFX中动态创建选项卡?

  2. 2

    Javafx如何动态地向fxml文件中的现有选项卡添加内容

  3. 3

    javafx在新选项卡中动态打开新的fxml文件

  4. 4

    JAVAFX FXML:动态创建的选项卡中的动态 ImageView 不显示

  5. 5

    Javafx如何动态地将内容添加到fxml文件中的现有选项卡

  6. 6

    识别JavaFX选项卡

  7. 7

    JavaFX 8-选项卡和选项卡,每个选项卡具有单独的FXML和控制器

  8. 8

    JavaFX在单击时添加带有fxml的新选项卡

  9. 9

    JavaFx-SceneBuilder中的选项卡顺序

  10. 10

    在tabpane javafx中创建垂直选项卡

  11. 11

    更改JavaFx选项卡的默认外观

  12. 12

    更改JavaFx选项卡的默认外观

  13. 13

    JavaFX Scene Builder定制选项卡

  14. 14

    JavaFX 禁用选项卡导航

  15. 15

    每次单击按钮时,如何在选项卡的文本中添加1?在JavaFX中

  16. 16

    当JavaFX中的选定选项卡更改时,如何聚焦特定节点?

  17. 17

    如何在JavaFX中以编程方式切换选项卡

  18. 18

    Netbeans 8.0的Java Platform Manager中缺少JavaFX选项卡

  19. 19

    在关闭 JAVAFX 时检查 TabPane 中是否没有选项卡

  20. 20

    在另一个控制器中关闭选项卡 - JavaFX

  21. 21

    将按钮添加到选项卡和选项卡区域JavaFX

  22. 22

    javafx的先前选项卡会影响最新的选项卡

  23. 23

    通过可编辑单元格的JavaFX选项卡

  24. 24

    JavaFX ContextMenu加速器从错误的选项卡启动

  25. 25

    JavaFX 8 TextArea松散地关注选项卡

  26. 26

    Javafx TabPane具有多行选项卡

  27. 27

    JavaFX,在选项卡控制器之间传递参数

  28. 28

    在JavaFX上动态添加和填充选项卡

  29. 29

    JavaFX选项卡窗格未显示

热门标签

归档