-2
JavaFX GUIのtablewビューの列にダウンロードボタンを追加する方法を知りたいので、各要素にリンクして、必要なファイルをダウンロードできます。 TableView - その中にダウンロードボタンを追加する方法
たとえば、上記の図では、各行のダウンロード欄にダウンロードボタンがあります。
JavaFX GUIのtablewビューの列にダウンロードボタンを追加する方法を知りたいので、各要素にリンクして、必要なファイルをダウンロードできます。 TableView - その中にダウンロードボタンを追加する方法
たとえば、上記の図では、各行のダウンロード欄にダウンロードボタンがあります。
TableColumn
にはCell FactoryとCell Value Factoryを指定する必要があります。 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);
}
}
}