2015-01-30 4 views
0

У меня есть ListView внутри этого окна, и я установил изображение неба как эффект (в SceneBuilder). Но теперь я не вижу свой список. Возможно ли иметь фоновый рисунок изображения и также список на выбор?ListView с изображением фона

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

Чтобы отобразить фоновое изображение позади 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, потому что текущий код будет применяться к каждому ListCell.

+0

Мне потребовалось некоторое время, чтобы сделать это в классе контроллера, но я получаю его в конце концов;) как я могу изменить цвет текста, фона и размера в моем списке? – Tomasz

+1

Поскольку 'ListCell' является' Labeled', для этого есть несколько параметров CSS: http://docs.oracle.com/javase/8/javafx/api/javafx/scene/doc-files/cssref.html# маркированный – eckig

Смежные вопросы