ListView与图像背景

时间:2015-01-30 21:31:29

标签: listview javafx scenebuilder

我在这个窗口里面有一个ListView,我将天空图像设置为一个效果(在SceneBuilder中)。 但是现在我看不到我的名单了。是否有可能有图像背景和列表可供选择?

enter image description here

控制器类:

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

}

1 个答案:

答案 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} }}