2016-01-18 58 views
1

在我的ListView myList中,我想每個項目(字符串)有它旁邊的一個小型照片。如何把圖片中的ListView的JavaFX

這裏是我如何我的ListView myList中定義:

ListView<String> myList = new ListView<String>(); 

SearchResultList.setCellFactory(new Callback<ListView<String>,ListCell<String>>() { 
     @Override 
     public ListCell<String> call(ListView<String> list) { 
      return new ColorRectCell(); 
     } 
    } 
); 

我讀你必須指定一個電池廠這在更新列表的每個項目。但是我不知道這一切是如何工作,這是我指定我電池廠

static class ColorRectCell extends ListCell<String> { 
    @Override 
    public void updateItem(String item, boolean empty) { 

      super.updateItem(item, empty); 
      Image rect = new Image("huisteken.jpg"); 
      ImageView rec = new ImageView(rect); 
      if (item != null) { 
       System.out.println("testing" + item +"######"); 

       setGraphic(rec); 
       setContentDisplay(ContentDisplay.GRAPHIC_ONLY); 
      } 

    } 
} 

請,任何意見或建議,歡迎的代碼。

+0

那麼,有什麼問題呢? –

+0

@James_D這使得照片只要有文字信息行。我想那張照片是在文本旁邊而不是替代 – coders

回答

1

我的解決方案來完成,這是設置單元格的文本爲null,使圖形包含含有圖片和文本橫向盒。這樣會讓你的updateItem是這樣的:

@Override 
void updateItem(final String item, final boolean empty) { 
    super.updateItem(item, empty); 

    // if null, display nothing 
    if (empty || item == null) { 
     setText(null); 
     setGraphic(null); 
     return; 
    } 

    setText(null); 

    Label textLabel = new Label(item + " "); 

    final HBox hbox = new HBox(); 
    hbox.setSpacing(5); 

    Label iconLabel = new Label(); 
    iconLabel.setGraphic(new ImageView(new Image("huisteken.jpg"))); 

    hbox.getChildren().addAll(iconLabel, textLabel); 
    setGraphic(hbox); 
} 

`