2016-04-13 31 views
-2

Bir JavaFX GUI'de bir tablew görünümü sütununun içine nasıl bir indirme düğmesi ekleyebileceğimi bilmek istiyorum, böylece her bir öğe için bir bağlantıya erişebilir ve ihtiyacım olan dosyaları indirebilirim . enter image description hereTableView - İçinde bir indirme düğmesi nasıl eklenir

Örneğin, yukarıdaki resimde, her satır için indirme sütununda bir indirme düğmesine sahip olmak istiyorum.

cevap

1

için Cell Factory ve Cell Value Factory bilgilerini sağlamanız gerekir. cellFactory, hücreValueFactory'den aldığı verileri oluşturmaktan sorumludur.

TableColumn<YourDataModel, String> yourColumn = new TableColumn<>(); 
yourColumn.setCellFactory(tableColumn -> new DownloadCell()); 
yourColumn.setCellValueFactory(cellData -> cellData.getValue().downloadProperty()); 

public class YourDataModel { 

    private StringProperty download = new SimpleStringProperty(); 
    // additional fields 

    public StringProperty downloadProperty() { 
     return download; 
    } 

    public String getDownload() { 
     return download.get(); 
    } 

    public void setDownload(String value) { 
     download.set(value); 
    } 

} 

public class DownloadCell extends TableCell<YourDataModel, String> { 

    private Hyperlink downloadLink; 

    public DownloadCell() { 
     downloadLink = new Hyperlink(); 
     downloadLink.setOnAction(evt -> { 
      try { 
       Desktop.getDesktop().browse(new URI(downloadLink.getText())); 
      } catch (Exception e) { 
       // exception handling 
      } 
     }); 
    } 

    @Override 
    protected void updateItem(String link, boolean empty) { 
     super.updateItem(link, empty); 

     if (link == null || empty) { 
      setGraphic(null); 
     } else { 
      downloadLink.setText(link); 
      setGraphic(downloadLink); 
     } 
    } 
}