【发布时间】:2016-04-13 20:56:53
【问题描述】:
【问题讨论】:
标签: java javafx download tableview
【问题讨论】:
标签: java javafx download 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);
}
}
}
【讨论】: