Добавить кнопки на вкладки и область вкладок JavaFX

Я ищу способ добавитькнопка в JavaFXTab.

Искал в интернете это, но я не могу найти никакого решения для этого.

Что-то вроде кнопок на скриншоте ниже.

Может ли кто-нибудь помочь мне с этим?

Ответы на вопрос(1)

Решение Вопроса

Иметь иконуButtonнаTabs:

setGraphic методTabможет быть использован для добавления любогоNodeотображаться наTab,Button может быть добавлено как этоNode.

После этого появляется полнофункциональная кнопка, но на ней не отображается значок.Button также имеетsetGraphic метод, который работает так же, поэтомуImageView можно добавить для отображенияImage наButton.

Иметь контрольButtons в верхнем правом углу области вкладок:

Эти кнопки могут быть размещенынаTabPane, а не внутриTabPane, Для этого вы можете использоватьAnchorPane закрепитьButtonс в верхнем правом углу.

Пример:

public class ButtonedTabPane extends Application {
    @Override
    public void start(Stage primaryStage) {
        BorderPane root = new BorderPane();
        TabPane tabPane = new TabPane();
        tabPane.setTabClosingPolicy(TabPane.TabClosingPolicy.UNAVAILABLE);

        // HBox of control buttons
        HBox hbox = new HBox();
        hbox.getChildren().addAll(createTabButton("min.png"), createTabButton("max.png"));

        // Anchor the controls
        AnchorPane anchor = new AnchorPane();
        anchor.getChildren().addAll(tabPane, hbox);
        AnchorPane.setTopAnchor(hbox, 3.0);
        AnchorPane.setRightAnchor(hbox, 5.0);
        AnchorPane.setTopAnchor(tabPane, 1.0);
        AnchorPane.setRightAnchor(tabPane, 1.0);
        AnchorPane.setLeftAnchor(tabPane, 1.0);
        AnchorPane.setBottomAnchor(tabPane, 1.0);

        // Create some tabs
        Tab tab = new Tab("Files");
        tab.setGraphic(createTabButton("files.png"));
        ((Button) tab.getGraphic()).setOnAction(e -> System.out.println("I'll show the list of files!"));
        tabPane.getTabs().add(tab);

        tab = new Tab("Network");
        tab.setGraphic(createTabButton("network.png"));
        ((Button) tab.getGraphic()).setOnAction(e -> System.out.println("I'll show the network!"));
        tabPane.getTabs().add(tab);

        root.setCenter(anchor);
        Scene scene = new Scene(root, 400, 400);
        scene.getStylesheets().add(getClass().getResource("style.css").toExternalForm());
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    private Button createTabButton(String iconName) {
        Button button = new Button();
        ImageView imageView = new ImageView(new Image(getClass().getResource(iconName).toExternalForm(),
                16, 16, false, true));
        button.setGraphic(imageView);
        button.getStyleClass().add("tab-button");
        return button;
    }

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

Осталось только удалить заданный по умолчанию фон и границы изButtons. Это можно сделать, вставив следующие селекторы CSS в таблицу стилей CSS.

style.css

.tab-button {
    -fx-border-width: 0;
    -fx-background-radius: 0;
    -fx-background-color: transparent;
    -fx-content-display: graphic-only;
}

.tab-button:hover {
    -fx-background-color: white;
}

Результат:

                     https://i.stack.imgur.com/olclI.png
 JimmyD09 июн. 2016 г., 13:45
ТНК, который сделал работу

Ваш ответ на вопрос