2017-02-11 18 views
0

Ich habe eine Frage zum Styling.JavaFX Deaktivieren Sie einen Knoten, aber deaktivieren psuedoclass

Ich habe eine Bühne mit zwei separaten Scheiben. Wenn sich der Benutzer in Fenster 1 befindet, sollte er in der Lage sein, zwischen allen Eingabefeldern in Fenster 1 und der Symbolleiste für die Bühne zu navigieren, aber nicht in Fenster 2. Wenn Fenster 2 aktiv ist, wechseln Sie die Steuerelemente in Fenster 2 dann Symbolleiste, aber nicht Fenster 1.

Um dies zu erreichen, deaktiviere ich Scheibe 2, wenn Scheibe 1 aktiv wird und umgekehrt.

Die Benutzer beschweren sich, dass nicht aktive Scheibe ausgewaschen aussieht. Ich frage mich, ob es eine Möglichkeit gibt, den Bereich zu deaktivieren, aber nicht die aktuelle Schattierung zu ändern?

Grundsätzlich möchte ich den Bereich deaktiviert, aber nicht die Pseudo-Klasse deaktiviert auf etwas darunter festgelegt werden.

Im Prinzip habe ich eine Methode, die dies tut:

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

Ich brauche das gleiche für normale Dinge Behinderte Styling zu halten, aber in diesem Fall haben wir jede Scheibe werden unter Verwendung eines MDI-Typ-Erlebnis zu schaffen, so nur einer kann aktiv sein, daher würde der Knoten im Idealfall aktiv aussehen, obwohl er deaktiviert war - die Tastaturnavigation wird dadurch verhindert.

Antwort

0

konnte ich folgendes tun:

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"); 
    } 

} 

addierten die folgenden 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; 
} 

Dies scheint außer zu arbeiten ist ein breiter Strich und echte Behinderte Felder, während immer noch deaktiviert Blick freigegeben .

Verwandte Themen