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

用户名

如何使用JavaFX / FXML创建新标签?我已经在FXML中创建了一个Tabpane,但是我想单击一个导致出现新标签的按钮。

这是我的FXML:

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


<BorderPane 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="sample.Controller">
<top>
      <MenuBar BorderPane.alignment="CENTER">
        <menus>
          <Menu mnemonicParsing="false" text="File">
            <items>
             <MenuItem mnemonicParsing="false" text="New..." onAction="#btnNew"/>
             <MenuItem mnemonicParsing="false" text="Save..." />
             <MenuItem mnemonicParsing="false" text="Save As..." />
             <MenuItem mnemonicParsing="false" text="Open..." />
             <MenuItem mnemonicParsing="false" text="Close" />

        </items>
      </Menu>
      <Menu mnemonicParsing="false" text="Help">
        <items>
          <MenuItem mnemonicParsing="false" text="About Blank"  onAction="#btnAbout"/>
        </items>
      </Menu>
    </menus>
  </MenuBar>
</top>
<center>
  <TabPane prefHeight="200.0" prefWidth="200.0" tabClosingPolicy="UNAVAILABLE" BorderPane.alignment="CENTER" fx:id="tabPane">
    <tabs>
      <Tab text="Untitled Tab 1">
           <content>
              <AnchorPane>
                 <children>
                    <TextFlow maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" minHeight="-Infinity" minWidth="-Infinity" />
                 </children>
              </AnchorPane>
           </content>
        </Tab>
    </tabs>
  </TabPane>

这是我现在在控制器中尝试的代码:

package sample;

import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.*;
import java.net.URL;
import java.util.ResourceBundle;


public class Controller implements Initializable {
@FXML
private Button btnAbout;
@FXML
private Button btnNew;
@FXML
private TabPane tabPane;

//tab array
int intTabs = 0;
Tab[] openTabs;

@FXML
private void btnNew(ActionEvent event){
    try{
        intTabs++;
        openTabs = new Tab[intTabs];
        //System.out.println(openTabs.length);
        tabAdder(intTabs, openTabs);
    }catch(Exception e){
        e.printStackTrace();
    }

}

private TabPane tabAdder(int tabNum, Tab[] tabs){
    //System.out.println(tabNum);
    tabPane.getTabs().add(tabs[tabNum]);
    return tabPane;
}

@FXML
private void btnAbout(ActionEvent event){
    Alert alert = new Alert(Alert.AlertType.INFORMATION);
    alert.setTitle("Blank: Information");
    alert.setHeaderText(null);
    alert.setContentText("This is Blank, a simple and soon to be elegant cross platform text editor.");
    alert.showAndWait();
}


public void initialize(URL url, ResourceBundle rb){
    //tabPane.getTabs().add

}

}

我不太确定问题出在哪里,我一直在浏览大量资源,并且知道如何添加常规标签。

我知道如果我制作这样的标签:

Tab fapTab = new Tab();

我可以这样添加它:

tabPane.getTabs().add(fapTab);

但是我想动态创建它们,因为我不知道用户想要多少个标签。因此,我的方法是创建一个选项卡数组,每当用户单击“新建”时,选项卡数组都会变大,然后具有将新选项卡添加到gui的功能。但是它不起作用,我尝试了几种不同的方法,使人们的代码适应我自己的代码。

所以我的问题是,有人知道我在做什么错吗?

以下是其中一些来源:javafx在新选项卡中动态打开新的fxml文件 http://javafx-albert-af77.blogspot.com/2012/06/tabs-fxml.html https://www.youtube.com/看吗?v = NhoiSMk3f5U

詹姆斯·D

您已经给出了答案:只需创建一个新标签并将其添加到标签窗格中即可:

Tab tab = new Tab();
tabPane.getTabs().add(tab);

完整的例子:

AddTabsExample.fxml:

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

<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.control.TabPane?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.control.Button?>

<BorderPane xmlns:fx="http://javafx.com/fxml/1"
    fx:controller="AddTabsController">
    <center>
        <TabPane fx:id="tabPane" />
    </center>
    <bottom>
        <HBox alignment="center">
            <Button text="Add tab" onAction="#addTab" />
            <Button text="List tabs" onAction="#listTabs" />
        </HBox>
    </bottom>
</BorderPane>

AddTabsController.java:

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

public class AddTabsController  {

    @FXML
    private TabPane tabPane ;

    public void initialize() {
        tabPane.getTabs().add(new Tab("Tab 1"));
    }

    @FXML
    private void addTab() {
        int numTabs = tabPane.getTabs().size();
        Tab tab = new Tab("Tab "+(numTabs+1));
        tabPane.getTabs().add(tab);
    }

    @FXML
    private void listTabs() {
        tabPane.getTabs().forEach(tab -> System.out.println(tab.getText()));
        System.out.println();
    }
}

应用程序(AddTabsExample.java):

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

public class AddTabsExample extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception {
        BorderPane root = FXMLLoader.load(getClass().getResource("AddTabsExample.fxml"));
        primaryStage.setScene(new Scene(root, 800, 600));
        primaryStage.show();
    }

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

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

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

来自分类Dev

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

来自分类Dev

JavaFX-选项卡中的FXML

来自分类Dev

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

来自分类Dev

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

来自分类Dev

使用Angular UI Bootstrap在动态创建的选项卡上设置活动选项卡

来自分类Dev

在tabpane javafx中创建垂直选项卡

来自分类Dev

如何创建动态Kendo TabStrip选项卡

来自分类Dev

如何为动态创建的导航选项卡添加值?

来自分类Dev

如何在Foundation 6中动态创建和删除选项卡?

来自分类Dev

如何在Windows窗体中动态创建选项卡页内容?

来自分类Dev

如何创建动态选项卡并为 Android 中的每个片段添加不同的功能?

来自分类Dev

如何在Android中使用ViewPager动态创建选项卡?

来自分类Dev

使用jQuery UI从动态创建的选项卡中获取数据属性值

来自分类Dev

如何在公式中动态设置选项卡名称?

来自分类Dev

JavaFX:如何在不使用5x的情况下使用SceneBuilder在TabPane中创建5个相同的选项卡?

来自分类Dev

如何在选项卡中创建幻灯片

来自分类Dev

如何使用系统获取属性创建选项卡?

来自分类Dev

如何使用多个选项卡创建应用程序

来自分类Dev

如何使用换行符创建选项卡?

来自分类Dev

如何使用多个选项卡创建应用程序

来自分类Dev

如何使用换行符创建选项卡?

来自分类Dev

使用QTabWidget在Qt中创建选项卡

来自分类Dev

使用QTabWidget在Qt中创建选项卡

来自分类Dev

如何在使用TabHost创建的Android中仅显示选定的选项卡布局

来自分类Dev

如何使用用户输入创建 html 并将其显示在新选项卡中?

来自分类Dev

TabView nativescript 中的动态选项卡

来自分类Dev

如何使用UIPath中的“关闭”选项卡活动关闭子选项卡

来自分类Dev

如何使用Angular和Bootstrap中的“全部”选项卡进行选项卡导航?

Related 相关文章

  1. 1

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

  2. 2

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

  3. 3

    JavaFX-选项卡中的FXML

  4. 4

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

  5. 5

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

  6. 6

    使用Angular UI Bootstrap在动态创建的选项卡上设置活动选项卡

  7. 7

    在tabpane javafx中创建垂直选项卡

  8. 8

    如何创建动态Kendo TabStrip选项卡

  9. 9

    如何为动态创建的导航选项卡添加值?

  10. 10

    如何在Foundation 6中动态创建和删除选项卡?

  11. 11

    如何在Windows窗体中动态创建选项卡页内容?

  12. 12

    如何创建动态选项卡并为 Android 中的每个片段添加不同的功能?

  13. 13

    如何在Android中使用ViewPager动态创建选项卡?

  14. 14

    使用jQuery UI从动态创建的选项卡中获取数据属性值

  15. 15

    如何在公式中动态设置选项卡名称?

  16. 16

    JavaFX:如何在不使用5x的情况下使用SceneBuilder在TabPane中创建5个相同的选项卡?

  17. 17

    如何在选项卡中创建幻灯片

  18. 18

    如何使用系统获取属性创建选项卡?

  19. 19

    如何使用多个选项卡创建应用程序

  20. 20

    如何使用换行符创建选项卡?

  21. 21

    如何使用多个选项卡创建应用程序

  22. 22

    如何使用换行符创建选项卡?

  23. 23

    使用QTabWidget在Qt中创建选项卡

  24. 24

    使用QTabWidget在Qt中创建选项卡

  25. 25

    如何在使用TabHost创建的Android中仅显示选定的选项卡布局

  26. 26

    如何使用用户输入创建 html 并将其显示在新选项卡中?

  27. 27

    TabView nativescript 中的动态选项卡

  28. 28

    如何使用UIPath中的“关闭”选项卡活动关闭子选项卡

  29. 29

    如何使用Angular和Bootstrap中的“全部”选项卡进行选项卡导航?

热门标签

归档