2016-02-07 3 views
1

У меня есть JavaFX ListView, который содержит объекты (представленные именем). Я хочу покрасить имя каждого элемента в соответствии с его серьезностью (одно из полей объектов). Является ли это возможным? Если да, то как я могу это сделать?Установить цвета элементов в ListView в JavaFX

Например, у меня есть список новостей по всему миру в представлении списка, и каждый новый имеет поле, является ли оно важным новым или нет, если оно есть, я хочу покрасить имя нового в список красный, в противном случае я хочу покрасить его зеленым цветом.

Мой код:

private ListView<String> newsList; 

private Vector<IntelligenceNew> newsListVec; 

private ObservableList<String> newsListObserver; 

public void initializeListView(IntelligenceSource source) { 
    newsListObserver = FXCollections.observableArrayList(); 
    newsListVec = new Vector<>(); 
    for (IntelligenceNew news : source.getListOfNews()){ 
     newsListObserver.add(news.getName()); 
     newsListVec.add(news); 
    } 

    newsList.setItems(newsListObserver); 
} 

При вставке новости в ListView, я хочу, чтобы проверить серьезность каждой новой, а затем цвет его красным или зеленым.

+0

Нет необходимости, чтобы закрыть этот вопрос, OP предоставил MCVE так стало ясно, что он просит. Я огляделся по тому же вопросу о своей любимой поисковой системе и не смог найти ее в топ-ссылках. –

ответ

1

public class YourFormatCell extends ListCell<String> { 
    @Override 
    protected void updateItem(String item, boolean empty) { 
     super.updateItem(item, empty); 
     setText(item); 
     setTextFill(isSevere(item)?Color.RED:Color.GREEN); 
    } 
} 

newsList.setCellFactory(new Callback<ListView<String>, ListCell<String>>() { 
    @Override 
    public ListCell<String> call(ListView<String> list) { 
     return new YourFormatCell(); 
    } 
}); 
+0

Большое вам спасибо! –

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