我在这个窗口里面有一个ListView,我将天空图像设置为一个效果(在SceneBuilder中)。 但是现在我看不到我的名单了。是否有可能有图像背景和列表可供选择?
控制器类:
public class SampleController implements Initializable {
@FXML
ListView<String> listView;
@Override
public void initialize(URL location, ResourceBundle resources) {
ObservableList<String> list;
list = FXCollections.observableArrayList("Opcja 1", "Opcja 2");
listView.setItems(list);
}
}
答案 0 :(得分:1)
要在ListView
后面显示背景图片,您必须删除每个ListCell
上的背景颜色。这是一个示例:
@Override
public void start(Stage primaryStage) {
String image = "http://upload.wikimedia.org/wikipedia/commons/1/16/Appearance_of_sky_for_weather_forecast,_Dhaka,_Bangladesh.JPG";
ObservableList<String> data = FXCollections.observableList(IntStream
.range(1000, 2000).mapToObj(Integer::toString)
.collect(Collectors.toList()));
ListView<String> listView = new ListView<>(data);
listView.setBackground(new Background(new BackgroundImage(new Image(
image), BackgroundRepeat.NO_REPEAT, BackgroundRepeat.NO_REPEAT,
BackgroundPosition.CENTER, BackgroundSize.DEFAULT)));
BorderPane root = new BorderPane(listView);
Scene scene = new Scene(root, 700, 400);
scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.show();
}
必要的CSS代码:
.list-cell {
-fx-background-color: null;
}
提示:在大多数情况下,您将为每个单元格添加一个自定义CSS类(例如.my-cell
)并使用该类而不是.list-cell
,因为当前代码将应用于每个{{1} }}