TabPane、Tab

  • 创建标签栏并添加3个标签

    TabPane tabPane = new TabPane();
    // 宽度不够时,会变成下拉菜单
    tabPane.setPrefSize(300, 300);  
    // 省略每个标签中常规设置和添加组件的具体代码
    Tab tab1 = new Tab("tab1");  
    Tab tab2 = new Tab("tab2");  
    Tab tab3 = new Tab("tab3");
    tabPane.getTabs().addAll(tab1, tab2, tab3);
    

  • 默认选中第二个tabtabPane.getSelectionModel().select(tab2);

  • 设置tab方向tabPane.setSide(Side.RIGHT);

  • 设置标签图标是否跟随标签方向旋转tabPane.setRotateGraphic(false);

  • 设置tab不可关闭tabPane.setTabClosingPolicy(TabPane.TabClosingPolicy.UNAVAILABLE);

  • 标签栏中当前标签改变时监听器

    tabPane.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> System.out.println(newValue.getText()));
    
  • tab1选择改变监听器(展开,收起)

    tab1.setOnSelectionChanged(event -> System.out.println("tab1 selected status:" + tab1.isSelected()));
    
  • tab1标签关闭后触发事件

    tab1.setOnClosed(event-> tabPane.getTabs().add(new Tab("tab" + i.getAndIncrement())));
    
  • tab1标签开始关闭时触发事件

    tab1.setOnCloseRequest(event->{  
        tabPane.getTabs().add(new Tab("tab" + i.getAndIncrement()));  
        // 阻止事件传递给关闭后事件,会导致tab关闭失败  
        event.consume();  
    });