ListView with Images JavaFX

时间:2016-11-06 19:08:03

标签: java image listview javafx

是否有可能在文本旁边的ListView中有Image?图像的名称与" oddelenyObsah []"相同。这应该像库存一样工作,在列表视图中是您的库存中的项目,我需要它旁边的项目的图片。

private HerniPlan plan;
private Batoh batoh;
ListView<String> list;
ObservableList<String> data;

private final Image boty  = new Image("../zdroje/boty.png");
private final Image odpadky  = new Image("https://upload.wikimedia.org/wikipedia/commons/f/f1/Ruby_logo_64x64.png");
private final Image varecka  = new Image("https://upload.wikimedia.org/wikipedia/commons/f/f1/Ruby_logo_64x64.png");
private final Image panev  = new Image("https://upload.wikimedia.org/wikipedia/commons/f/f1/Ruby_logo_64x64.png");
private final Image desky  = new Image("https://upload.wikimedia.org/wikipedia/commons/f/f1/Ruby_logo_64x64.png");
private final Image nuzky  = new Image("https://upload.wikimedia.org/wikipedia/commons/f/f1/Ruby_logo_64x64.png");
private final Image pacidlo  = new Image("https://upload.wikimedia.org/wikipedia/commons/f/f1/Ruby_logo_64x64.png");
private final Image rezavy_klic  = new Image("https://upload.wikimedia.org/wikipedia/commons/f/f1/Ruby_logo_64x64.png");
private final Image klic_od_domu  = new Image("https://upload.wikimedia.org/wikipedia/commons/f/f1/Ruby_logo_64x64.png");

private Image[] listOfImages = {boty, odpadky, varecka, panev, desky, nuzky, pacidlo, rezavy_klic, klic_od_domu};

public PanelBatohu(Batoh batoh) {
    this.batoh = batoh;
    batoh.zaregistrujPozorovateleBatohu(this);
    init();
}

private void init() {
    list = new ListView<>();
    data = FXCollections.observableArrayList();
    list.setItems(data);
    list.setPrefWidth(200);
    aktualizujBatoh();
}

public ListView<String> getList() {
    return list;
}

@Override
public void aktualizujBatoh() {
    String veci = batoh.seznamVBatohu();
    data.clear();
    String[] oddelenyObsah = veci.split(" ");
    for (int i = 1; i < oddelenyObsah.length; i++) {          
        if(veci.equals(boty)){

        }
        data.add(oddelenyObsah[i]);           
    }
}

 /**
 * Metoda zaregistruje pozorovatele k hernímu plánu při spuštění nové hry.
 *
 * @param batoh
 */
public void nastaveniHernihoPlanu(Batoh batoh) {
    this.batoh = batoh;
    batoh.zaregistrujPozorovateleBatohu(this);
    this.aktualizujBatoh();
}

}

1 个答案:

答案 0 :(得分:1)

这可以使用单元工厂(自定义渲染)完成。这是代码段。

列出项目

class Item {
    final String text;
    final ImageView image;

    public Item(final String text, final String imageURL) {
        this.text = text;
        this.image = new ImageView(imageURL);
    }
}

列表视图

final ListView<Item> list = new ListView<>(FXCollections.observableArrayList(
        new Item("Straight", "https://d30y9cdsu7xlg0.cloudfront.net/png/17383-200.png"),
        new Item("Turned", "https://d30y9cdsu7xlg0.cloudfront.net/png/18030-200.png"),
        new Item("Inversed", "https://d30y9cdsu7xlg0.cloudfront.net/png/19850-200.png")
));

// Custom cell factory
list.setCellFactory(l -> new ListCell<Item>() {
    @Override
    public void updateItem(final Item item, final boolean empty) {
        if (empty) {
            setText("");
            setGraphic(null);
        } else {
            setText(item.text);
            setGraphic(item.image);
        }
    }
});
相关问题