css - 不显示 float TabPane 的样式

标签 css javafx tabpanel

尝试通过添加 CSS 文件来自定义 float TabPane,如下例所示。新样式不会仅出现在 float 选项卡 Pane 中 - 对于常规 Pane ,样式会按预期出现。

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

  @Override
  public void start(Stage stage)
  {
    Parent root = createContentPane();
    root.getStylesheets().add(getClass().getResource("/floatingTabPane.css").toExternalForm());        
    Scene scene = new Scene(root, 1000, 800);    
    stage.setScene(scene);

    stage.setTitle(getClass().getSimpleName());
    stage.show();
  }

  private Parent createContentPane()
  {
    TabPane tabPane = new TabPane();
    tabPane.getStyleClass().add(TabPane.STYLE_CLASS_FLOATING);

    addTab(tabPane, "Tab 1", new StackPane());
    addTab(tabPane, "Tab 2", new StackPane());
    addTab(tabPane, "Tab 3", new StackPane());
    tabPane.getSelectionModel().selectLast();

    return new BorderPane(tabPane);
  }

  private void addTab(TabPane tabPane, String name, Node content)
  {
    Tab tab = new Tab();
    tab.setText(name);
    tab.setContent(content);
    tabPane.getTabs().add(tab);    
  }  
}

FloatingTabPane.css:

    .tab-pane.floating > .tab-header-area > .tab-header-background {
    -fx-border-color: red;
    -fx-border-width: 2;
    -fx-background-color: cyan;
}

最佳答案

这很有趣。问题是因为 headerBackground 可见性设置为 false,如果您使用 FLOATING 样式类。

如果你在里面搜索TabPaneSkin ,你会发现:

if (isFloatingStyleClass()) {
     headerBackground.setVisible(false); // <---- Imp part
} else {
     headerBackground.resize(snapSize(getWidth()), snapSize(getHeight()));
     headerBackground.setVisible(true);
}

由于它的可见性设置为 false,您最好的办法是在 tab-header-area 而不是 tab-header-background 上进行更改

.tab-pane.floating > .tab-header-area {
    -fx-border-color: red;
    -fx-border-width: 2;
    -fx-background-color: cyan;
}

这会在选项卡上留下一条细红线,但这总比没有样式要好 ;)

关于css - 不显示 float TabPane 的样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33299249/

相关文章:

javascript - 根据预设 "div"和 "width"的内容动态更改 "height"的高度

python - 为 css 文件设置 django

JavaFX,如果有人选中 Tableview 中的复选框,如何触发事件

Javafx TextField伪ClassStateChanged方法不起作用

javascript - 一起滚动两个 ext.TabPanel

java - 如何向 TabPanel GWT 添加多个小部件?

html - Css float li 但不是 ul

jquery - 删除从 jQuery UI 创建的内联样式

java - 如何更改 JavaFX 中的突出显示颜色?

r - Shiny 的仪表板主板高度问题