[英]Java FX: TableView - display simple HTML
我想知道,如果可以在JavaFX TableView(b,i,下標,supscript)中呈現簡單的HTML標簽。 在我的代碼片段中,我使用了默認的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);
我希望我能以粗體顯示表格中的示例數據。 提前致謝!
--UPDATE允許我查看我的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());
}
});
TableCell中的WebView中的HTML
您必須創建自己的單元工廠,該工廠返回加載HTML內容的WebView節點。
正確調整WebView的大小
在建立WebView節點的首選大小方面,這有點棘手。 如果實現了RT-25005自動首選的WebView大小,那將更簡單。
我認為如果您只是使用webView.setPrefSize(prefX,prefY)調用替換WebView的maxSize設置,那么您問題中的示例代碼將起作用。 您只需要猜測prefX和prefY值應該是什么,因為我不知道以編程方式確定的好方法。
我認為您的代碼應該通過設置WebView的最大大小來工作,但WebView似乎不尊重最大大小設置,只使用pref大小設置,我認為這可能是Java 8b129中的一個錯誤(您可以提交在JavaFX Issue Tracker中有一個最小的,可執行的測試用例,它可以再現它並描述你的測試環境)。
TextFlow替代方案
您還可以考慮使用TextFlow組件來表示樣式化文本。 它不是HTML,但是如果您想要做的只是一些簡單的樣式,例如在單元格中使用粗體或斜體創建一些文本,那么它可能是一個不錯的選擇。
在WebEngine / WebView而不是TableView中使用HTML表。 表格示例
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.