我正在使用以下代码使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宽度的某个宽度时显示的选项卡向下按钮视图。您可以在下图的右上角看到:
我尝试使用其类
.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();
}
}