Javafx原生的TabPane没有配置标签页的管理菜单。由于项目需要对打开的标签页进行部分关闭和全部关闭的操作,因此使用BorderPane、StackPane和TabPane进行组合封装了一个控件。 效果图如下:
控件代码:
import javafx.collections.ListChangeListener;
import javafx.collections.ObservableList;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.control.*;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.StackPane;
public class CloseableTabPane extends BorderPane {
private TabPane tabPane;
public CloseableTabPane() {
this.tabPane = new TabPane();
StackPane sp = new StackPane();
sp.getChildren().add(tabPane);
MenuButton menuButton = new MenuButton("关闭选项");
menuButton.setVisible(false);
StackPane.setMargin(menuButton,new Insets(5));
sp.setAlignment(Pos.TOP_RIGHT);
//Tab全部关闭后,则不显示关闭菜单按钮
tabPane.getTabs().addListener(new ListChangeListener<Tab