我正在使用以下代码使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
的填充/ margin / bg-color属性,但没有任何效果。
是否有任何方法可以将其删除,或者将其偏移到远离干扰的最后一个标签?
答案 0 :(得分:1)
这是正确的轨道,但你必须改变一些。您基本上需要将Tabs'
宽度设置为一定长度。然后,您需要将TabPane's
宽度设置为一起添加的所有Tabs
的长度。最后,添加一个缓冲区,以便下拉列表不显示。 - &GT;请参阅代码中的+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();
}
}