2016-04-13 5 views
-2

Я хочу знать, как добавить кнопку загрузки внутри столбца представления tablew в графическом интерфейсе JavaFX, поэтому для каждого элемента я могу получить ссылку и загрузить файлы, которые мне нужны , enter image description hereTableView - Как добавить кнопку загрузки внутри него

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

ответ

1

Вам необходимо указать Cell Factory и Cell Value Factory для вашего TableColumn. CellFactory несет ответственность за предоставление данных, полученных из cellValueFactory.

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); 
     } 
    } 
} 
Смежные вопросы