JavaFX禁用节点,但关闭禁用伪造的类

时间:2017-02-11 03:31:32

标签: javafx-8

我有一个造型问题。

我有一个有两个独立窗格的舞台。当用户在窗格1上时,他们应该能够在窗格1中的所有输入字段和阶段的工具栏之间进行选项卡,但是选项卡不应该进入窗格2.当窗格2处于活动状态时相同循环窗格2上的控件然后工具栏,但不是窗格1.

要完成此操作,我在窗格1变为活动状态时禁用窗格2,反之亦然。

用户抱怨非活动窗格看起来已被淘汰。我想知道是否有办法禁用窗格但没有更改当前的阴影?

基本上我想将窗格设置为禁用,而不是将伪类设置为禁用其下的任何内容。

基本上我有一个方法可以做到这一点:

setContentNodeDisabled(Boolean value) {
    contentNode.setDisabled(value);
    //I tried this -- But this didn't work
    contentNode. pseudoClassStateChanged(PseudoClass.getPseudoClass("disabled"), false);
}

我需要保持禁用的样式与正常情况相同,但在这种情况下,我们使用每个窗格创建MDI类型体验,因此只有一个可以处于活动状态,因此理想情况下节点看起来是活动的,即使它被禁用 - 阻止键盘导航。

1 个答案:

答案 0 :(得分:0)

我能够做到以下几点:

setContentNodeDisabled(Boolean value) {
    contentNode.setDisabled(value);
    if(value && !contentNode.getStyleClass().contains("myDisabledPane")){
        contentNode.getStyleClass().add("myDisabledPane");
    } else if(!value && contentNode.getStyleClass().contains("myDisabledPane")){
        contentNode.getStyleClass().remove("myDisabledPane");
    }

}

添加了以下CSS:

.myDisabledPane .label:disabled,
.myDisabledPane .button:disabled,
.myDisabledPane .toggle-button:disabled,
.myDisabledPane .radio-button:disabled,
.myDisabledPane .check-box:disabled,
.myDisabledPane .hyperlink:disabled,
.myDisabledPane .menu-button:disabled,
.myDisabledPane .split-menu-button:disabled,
.myDisabledPane .slider:disabled,
.myDisabledPane .scroll-bar:disabled,
.myDisabledPane .scroll-pane:disabled,
.myDisabledPane .progress-bar:disabled,
.myDisabledPane .progress-indicator:disabled,
.myDisabledPane .text-input:disabled,
.myDisabledPane .choice-box:disabled,
.myDisabledPane .combo-box-base:disabled,
.myDisabledPane .date-cell:disabled > *, /* This is set on children so border is not affected. */
.myDisabledPane .list-view:disabled,
.myDisabledPane .tree-view:disabled,
.myDisabledPane .table-view:disabled,
.myDisabledPane .tree-table-view:disabled,
.myDisabledPane .tab-pane:disabled,
.myDisabledPane .titled-pane:disabled > .title,
.myDisabledPane .accordion:disabled > .titled-pane > .title,
.myDisabledPane .tab-pane > .tab-header-area > .headers-region > .tab:disabled,
.myDisabledPane .menu:disabled,
.myDisabledPane .menu-item:disabled > .label,
.myDisabledPane .menu-item:disabled,
.myDisabledPane .list-cell:filled:selected:focused:disabled,
.myDisabledPane .list-cell:filled:selected:disabled,
.myDisabledPane .tree-cell:filled:selected:focused:disabled,
.myDisabledPane .tree-cell:filled:selected:disabled,
.myDisabledPane .tree-cell > .tree-disclosure-node:disabled,
.myDisabledPane .tree-table-row-cell > .tree-disclosure-node:disabled,
.myDisabledPane .table-row-cell:selected:disabled,
.myDisabledPane .tree-table-row-cell:selected:disabled,
.myDisabledPane .table-cell:selected:disabled,
.myDisabledPane .tree-table-cell:selected:disabled,
.myDisabledPane .spinner:disabled {
    -fx-opacity: 1.0;
}

这似乎有效,除了宽广的笔划和真正禁用的字段,同时仍然禁用了启用的外观。

相关问题