【发布时间】:2014-04-15 14:40:21
【问题描述】:
我想知道,是否可以在 JavaFX TableView 中呈现简单的 HTML 标记(b、i、下标、下标)。在我的代码 sn-p 中,我使用了默认的 cellValueFactory,但也许有人可以告诉我是否存在任何允许我显示 html 的单元工厂。
来自代码:
class Data{
private String row = "<b> Sample data</b>"
public String getRow(){
return row;
}
TableView<Data> tableView = new TableView();
TableColumn<Data,String> column = new TableColumn("Sample Column");
column.setCellValueFactory(new PropertyValueFactory<Data, String>("row"));
tableView.getColumns().addAll(column);
我希望我能在表格中以粗体看到示例数据。提前致谢!
--更新 允许我查看我的 HTML 的代码,但会调整表格单元格的大小,WebView 的大小会被忽略并且不会紧紧包裹
private class HTMLCell extends TableCell<Component, Component> {
@Override
protected void updateItem(Component item, boolean empty) {
super.updateItem(item, empty);
if (!empty) {
WebView webView = new WebView();
webView.setMaxWidth(200);
webView.setMaxHeight(50);
WebEngine engine = webView.getEngine();
// setGraphic(new Label("Test"));
setGraphic(webView);
String formula = item.getFormula();
engine.loadContent(formula);
}
}
}
TableColumn<Component, Component> formulaColumn = new TableColumn<>("Formula");
formulaColumn.setMinWidth(300);
formulaColumn.setCellFactory(new Callback<TableColumn<Component, Component>, TableCell<Component, Component>>() {
@Override
public TableCell<Component, Component> call(TableColumn<Component, Component> param) {
return new HTMLCell();
}
});
formulaColumn.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Component, Component>, ObservableValue<Component>>() {
@Override
public ObservableValue<Component> call(CellDataFeatures<Component, Component> param) {
return new SimpleObjectProperty<Component>(param.getValue());
}
});
【问题讨论】:
标签: java html javafx tableview