2017-02-02 2 views
0

Ich versuche, eine deaktivierte ListView auszusehen wie eine nicht-deaktiviert ListView.Wie ändert sich das Styling für deaktivierte ListView in JavaFX?

Ich schaute es nach oben und fand, dass Sie die Deckkraft auf 1 setzen müssen und eine Reihe von Ansätzen versucht haben, mit und ohne Stylesheets, aber keiner scheint zu funktionieren. Ich habe versucht:

listView.setStyle("-fx-opacity: 1.0;"); 

.listView:disabled { 
    -fx-opacity: 1.0; 
} 

.listView .list-cell { 
    -fx-opacity: 1.0; 
} 

.listView .list-cell:disabled { 
    -fx-opacity : 1.0; 
} 

ich auch die Hintergrundfarbe auf weiß haben versucht Einstellung aber das macht den Text invisble aus irgendeinem Grund, obwohl keine andere Farbe das tut. Wie würde ich das machen? Vielen Dank.

+0

können Sie ein wenig mehr erklären, was Sie versuchen, zu versuchen? Wann wird dieses Ereignis ausgelöst, damit es deaktiviert aussieht? Haben Sie versucht, nur die Opazität einzustellen? Sie können einfach 'listView.setOpacity (1.0);' – TravisF

+0

auch nur um zu erwähnen, wenn Sie ein externes CSS verwenden möchten, müssen Sie sicherstellen, dass es auf dem Parent-Knoten (am besten auf den Root-Knoten setzen) dann Sie kann seinen Stil über 'listView.getStyleClass(). add (" definedClass ");' und im externen CSS-Set '.definedClass {-fx-opacity: 1.0} zuweisen' Nur für den Fall, dass Sie ein universelles CSS setzen möchten. Außerdem können Sie das externe CSS nicht aufrufen, wenn es über SceneBuilder auf den Parent-Knoten gesetzt wurde. Es muss dem Root-Schmerz über 'root.getStyleSheets() hinzugefügt werden. Add (" link ");' – TravisF

+0

@ TravFitzy Ersetzen des Elements durch einen String anstelle eines Labels und mithilfe der Methode setOpacity, die bearbeitet wurde. Vielen Dank! – conyare

Antwort

0

Einstellen der Opazität in der disabled Pseudo-Klasse (wie Sie bereits erwähnt) sollte genug sein:

.list-view:disabled { 
    -fx-opacity: 1; 
} 

nur vergessen Sie nicht, das Stylesheet zum Scene hinzuzufügen:

scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm()); 

Als Beispiel :

public class Main extends Application { 
    @Override 
    public void start(Stage primaryStage) { 

     BorderPane root = new BorderPane(); 
     Scene scene = new Scene(root, 400, 400); 
     scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm()); 

     ListView<String> lw = new ListView<>(); 
     lw.setItems(FXCollections.observableArrayList("dog", "cat", "whale")); 
     lw.setDisable(true); 
     root.setCenter(lw); 

     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } 

    public static void main(String[] args) { 
     launch(args); 
    } 
} 

und der CSS-Selektor ist in enthalten Die Datei application.css und diese Datei im selben Verzeichnis wie die Application Klassendatei platziert.

Hinweis: Wenn Sie die Auswahl haben möchte, auch wie die gleich aussehen, können Sie die folgenden Selektoren auch definieren:

.list-cell:disabled, 
.list-cell:disabled, 
.list-view:disabled { 
    -fx-opacity: 1; 
}