gpt4 book ai didi

Java 外汇 : TableView - display simple HTML

转载 作者:可可西里 更新时间:2023-11-01 12:48:23 26 4
gpt4 key购买 nike

我想知道,是否可以在 JavaFX TableView 中呈现简单的 HTML 标记(b、i、下标、上标)。在我的代码片段中,我使用了默认的 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());
}
});

最佳答案

TableCell 中 WebView 中的 HTML

您必须创建自己的单元工厂,它返回一个 WebView 节点,您可以在其中加载 HTML 内容。

关于正确调整 WebView 的大小

就建立 WebView 节点的首选大小而言,这有点棘手。如果 RT-25005 Automatic preferred sizing of WebView 会更简单得到实现。

如果您只是将 WebView 的 maxSize 设置替换为 webView.setPrefSize(prefX, prefY) 调用,我认为您问题中的示例代码将起作用。您只需要猜测 prefX 和 prefY 的值应该是多少,因为我不知道以编程方式确定的好方法。

我认为您的代码应该通过设置 WebView 的最大大小来工作,但是 WebView 似乎不遵守最大大小设置并且只使用 pref 大小设置,我认为这可能是 Java 8b129 中的一个错误(您可以将其归档在 JavaFX Issue Tracker 中,其中包含一个可重现它的最小可执行测试用例以及您的测试环境的描述)。

TextFlow 替代方案

您也可以考虑使用 TextFlow用于表示您的样式文本的组件。它不是 HTML,但如果您只想做一些简单的样式设置,例如将单元格中的某些文本设为粗体或斜体,这可能是一个不错的选择。

关于Java 外汇 : TableView - display simple HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22334983/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com