我正在使用以下代码使TabPane的组合标签宽度适合TabPane的宽度。

private void initTabPane() {

    // Populate Tabs
    List<Tab> tabs = _tabPane.getTabs();
    tabs.add(new Tab("Metadator", _metadatorView));
    tabs.add(new Tab("Translator", _translatorView));
    tabs.add(new Tab("ESPN"));

    // Stretch to fit width
    _tabPane.tabMinWidthProperty().bind(_tabPane.widthProperty()
                                                .divide(_tabPane.getTabs().size())                                                   );
}


我卡住了尝试删除当选项卡达到相对于TabPane宽度的某个宽度时显示的选项卡向下按钮视图。您可以在下图的右上角看到:

java - JavaFX:扩展选项卡以适合其父TabPane-LMLPHP

我尝试使用其类.control-buttons-tab, .container, .tab-down-button, .arrow的padding / margin / bg-color属性,但没有任何效果。


  有什么方法可以删除它,或将其偏移很远,以免干扰最后一个标签?

最佳答案

这是正确的,但是您必须对其进行一些更改。基本上,您需要将Tabs'宽度设置为特定长度。然后,您需要将TabPane's宽度设置为所有加在一起的Tabs的长度。最后,添加一些缓冲区,以使下拉菜单不会显示。 ->参见代码中的+55

import java.util.List;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Tab;
import javafx.scene.control.TabPane;
import javafx.scene.layout.BorderPane;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

public class Main extends Application
{

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

    @Override
    public void start(Stage primaryStage)
    {
        primaryStage.setTitle("Tabs");
        Group root = new Group();

        TabPane tabPane = new TabPane();

        BorderPane borderPane = new BorderPane();
        List<Tab> tabs = tabPane.getTabs();
        tabs.add(new Tab("Metadator"));
        tabs.add(new Tab("Translator"));
        tabs.add(new Tab("ESPN"));

        tabPane.tabMinWidthProperty().set(100);//set the tabPane's tabs min and max widths to be the same.
        tabPane.tabMaxWidthProperty().set(100);//set the tabPane's tabs min and max widths to be the same.
        System.out.println(tabPane.tabMinWidthProperty().get());
        tabPane.setMinWidth((100 * tabPane.getTabs().size()) + 55);//set the tabPane's minWidth and maybe max width to the tabs combined width + a padding value
        tabPane.setPrefWidth((100 * tabPane.getTabs().size()) + 55);//set the tabPane's minWidth and maybe max width to the tabs combined width + a padding value
        borderPane.setCenter(tabPane);
        root.getChildren().add(borderPane);

        Scene scene = new Scene(root, (100 * tabPane.getTabs().size()) + 55, 250, Color.WHITE);//You might need to set the scene's with also
        primaryStage.setScene(scene);
        primaryStage.show();
    }

}


java - JavaFX:扩展选项卡以适合其父TabPane-LMLPHP

10-08 17:10