我试图让被禁用的ListView
看起来与非禁用的ListView
相同。
我查了一下,发现你必须将不透明度设置为1,并尝试了许多方法,有和没有样式表,但似乎都没有。我试过了:
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;
}
我也尝试将背景颜色设置为白色,但由于某种原因,这会使文本隐身,即使没有其他颜色可以做到这一点。我该怎么做呢?感谢。
答案 0 :(得分:0)
在disabled
伪类中设置不透明度(正如您所提到的)应该足够了:
.list-view:disabled {
-fx-opacity: 1;
}
不要忘记将样式表添加到Scene
:
scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
举个例子:
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);
}
}
并且CSS选择器包含在文件application.css
中,并且此文件与Application
类文件放在同一目录中。
注意:如果您希望选区看起来也一样,您也可以定义以下选择器:
.list-cell:disabled,
.list-cell:disabled,
.list-view:disabled {
-fx-opacity: 1;
}