【问题标题】:JavaFX: Hide Slider/Divider of the SplitPaneJavaFX:隐藏 SplitPane 的滑块/分隔线
【发布时间】:2012-09-14 03:55:33
【问题描述】:

我有一个带有SplitPane 的JavaFX 应用程序。我想隐藏SplitPane 的滑块/分隔符。我该怎么做?

来自德国的问候(对不起我的英语)

朱利安

【问题讨论】:

  • 使用拆分窗格以外的窗格/布局。如有必要,使用嵌套窗格。

标签: java javafx slider splitpanel


【解决方案1】:

SplitPane.Divider 不继承自 Node,因此它没有 disableProperty

如果您需要仅从代码中调整拆分窗格的大小,您可以通过 CSS 设置分隔线的外观,使其不可见且大小接近 0。

否则使用 AnchorPane 嵌套到 VBox

【讨论】:

    【解决方案2】:

    在 caspian.css 中,你会看到

    /* horizontal the two nodes are placed to the left/right of each other. */
    .split-pane:horizontal > * > .split-pane-divider {
       -fx-border-color: transparent -fx-box-border transparent #BBBBBB;
       -fx-background-color: transparent, -fx-inner-border-horizontal;
       -fx-background-insets: 0, 0 1 0 1;
    }
    
    /* vertical the two nodes are placed on top of each other. */
    .split-pane:vertical > * > .split-pane-divider {
       -fx-border-color:  #BBBBBB transparent -fx-box-border transparent;
       -fx-background-color: transparent, -fx-inner-border;
       -fx-background-insets: 0, 1 0 1 0;
    }
    

    我使用的是垂直的,所以我在我的 css 中覆盖了垂直的,如下所示:

    .split-pane:vertical > * > .split-pane-divider {
       -fx-border-color:  transparent;
       -fx-background-color: transparent;
       -fx-background-insets: 0;
    }
    

    而且它有效。如果您也想隐藏抓取器(例如,我没有隐藏它,看起来不错),我认为以下规则可能会奏效:

    .split-pane *.vertical-grabber {
        -fx-padding: 0;
        -fx-background-color: transparent;
        -fx-background-insets: 0;
        -fx-shape: " ";
    }
    

    希望对你有帮助。

    【讨论】:

    • 我想我做了如图所示,但它在 JavaFX 8 中不起作用。也许我没有使用 Caspian(如何检查),并且 css 需要不同?
    【解决方案3】:

    它在 Java FX8(摩德纳风格)中有点不同:

    .split-pane *.split-pane-divider {
        -fx-padding: 0 1 0 1;
    }
    

    【讨论】:

    • -fx-padding: 1 0 1 0 用于垂直方向 +1
    【解决方案4】:

    这些其他答案仍然留下一个灰色的细条,所以我在我的 CSS 中添加了:

    .split-pane-divider {
       -fx-background-color: transparent;
    }
    

    【讨论】:

      【解决方案5】:

      晚了,但这是正确的做法,而不是使用 CSS 解决它:

      for (Node node : splitPane.lookupAll(".split-pane-divider")) {
          node.setVisible(false);
      }
      

      【讨论】:

      • 我会争论使用 CSS 是在“解决问题”的地方。改变美学正是 CSS 的目的。
      【解决方案6】:

      另一个说明:

      分隔线出现在拆分窗格的项目列表中的子项之间。如果您的拆分窗格中只有一个项目,您将看不到分隔线。如果您的拆分窗格有 3 个项目,您将看到 2 个分隔符。如果您需要摆脱分隔线,您可能根本不需要拆分窗格中的项目。因此,只需暂时从拆分窗格的项目列表中删除该项目。

      【讨论】:

        猜你喜欢
        • 2018-04-22
        • 1970-01-01
        • 2018-08-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多