Java 可以使TabPane中的选项卡彼此宽度不同吗?

Java 可以使TabPane中的选项卡彼此宽度不同吗?,java,javafx,fxml,Java,Javafx,Fxml,我试图在选项卡窗格中的选项卡之间设置不同的宽度,但我不知道如何设置?我想要3个左右的标签,可以吗 干杯 根据琼尼·亨利的评论,我想出了这个办法。我想它和你描述的一样 您可以单独设置选项卡的样式,这样您就可以在附加到选项卡窗格的所有选项卡之间循环,并在每个第n个选项卡上设置特殊样式 import javafx.application.Application; import javafx.collections.ObservableList; import javafx.scene.Scene; i

我试图在选项卡窗格中的选项卡之间设置不同的宽度,但我不知道如何设置?我想要3个左右的标签,可以吗


干杯

根据琼尼·亨利的评论,我想出了这个办法。我想它和你描述的一样

您可以单独设置选项卡的样式,这样您就可以在附加到选项卡窗格的所有选项卡之间循环,并在每个第n个选项卡上设置特殊样式

import javafx.application.Application;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.Tab;
import javafx.scene.control.TabPane;
import javafx.scene.control.TextField;
import javafx.scene.layout.Region;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;

public class TabGroups extends Application {

    @Override
    public void start(Stage stage) {

        TabPane tabPane = new TabPane();
        Tab tab1 = new Tab("Tab 1");
        tab1.setContent(new Rectangle(200.0d, 200.0d, Color.LIGHTGREEN));
        Tab tab2 = new Tab("Tab 2");
        tab2.setContent(new Rectangle(200.0d, 200.0d, Color.LIGHTSTEELBLUE));
        Tab tab3 = new Tab("Tab 3");
        tab3.setContent(new Rectangle(200.0d, 200.0d, Color.LIGHTCORAL));

        Tab tabA = new Tab("Tab A");
        tabA.setStyle("-fx-background-color: cornsilk;");
        tabA.setContent(new Circle(100.0d, 100.0d, 100.0d, Color.BLUE));
        Tab tabB = new Tab("Tab B");
        tabB.setStyle("-fx-background-color: cornsilk;");
        tabB.setContent(new Circle(100.0d, 100.0d, 100.0d, Color.GREEN));
        Tab tabC = new Tab("Tab C");
        tabC.setStyle("-fx-background-color: cornsilk;");
        tabC.setContent(new Circle(100.0d, 100.0d, 100.0d, Color.YELLOW));

        Tab tabX = new Tab("Tab X");
        tabX.setContent(new TextField("This is " + tabX.getText()));
        Tab tabY = new Tab("Tab Y");
        tabY.setContent(new TextField("This is " + tabY.getText()));

        tabPane.getTabs().addAll(tab1, tab2, tab3, tabA, tabB, tabC, tabX, tabY);
        ObservableList<Tab> theTabs = tabPane.getTabs();

        // Add special CSS to every third tab.
        String addedStyle = "-fx-background-insets: 0 5em 0 0, 1 5em 1 1, 2 5em 0 0;"
                        + "-fx-padding: 0.083333em 5em 0.083333em 0.5em;";
        int counter = 1;
        for (Tab t : theTabs) {
            if ((counter % 3) == 0) {
                String existingStyle = t.getStyle();
                String newStyle;
                if (existingStyle != null) {
                    newStyle = existingStyle + addedStyle;
                } else {
                    newStyle = addedStyle;
                }
                t.styleProperty().setValue(newStyle);
            }
            counter++;
        }
        tabPane.setMaxSize(Region.USE_PREF_SIZE, Region.USE_PREF_SIZE);

        StackPane layout = new StackPane();
        layout.getChildren().add(tabPane);
        Scene scene = new Scene(layout);

        stage.setScene(scene);
        stage.show();
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }

}
使用setStyle方法将完全替换选项卡上存在的任何样式,因此,根据程序的主题,您可能希望获取现有样式并将任何更改附加到末尾。属性的最后一个设置将覆盖前面的任何设置。例如,样式可能会在特性列表的早期将背景设置为黑色,但在列表的后期将其更改为白色将覆盖早期的设置。另外,我不是CSS专家,下面使用的样式有问题,因为每三个选项卡的右边缘和下边缘都被弄乱了。此外,第二个和第三个选项卡之间的间距也被弄乱了


希望能有所帮助。

我在谷歌上搜索了Java Swing TabPane选项卡宽度,第二个链接给了我:我使用JavaFX,我不是说选项卡的宽度,我是说选项卡之间的空间宽度。我再次在谷歌上搜索JavaFX TabPane选项卡之间的空间,这次第一个链接给了我: