JavaFX HTML 节点元素

标签 java webview javafx

如何将新的 HTMLTableRowElement 添加到 HTMLTableElement,并将 HTMLLIElement 添加到 HTMLUListElement?

在我看来,我不能只是 new 我想要的东西,而且似乎在任何地方都没有 getInstance() 方法。

谢谢。

最佳答案

您可以使用 org.w3c.dom API(它是核心 Java 库的一部分)。老实说,我发现这个 API 使用起来非常难看,但它确实可以完成工作。

这是一个最小的例子:

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.web.WebView;
import javafx.stage.Stage;

import org.w3c.dom.Document;
import org.w3c.dom.Element;

public class DynamicWebViewTest extends Application {

    @Override
    public void start(Stage primaryStage) {
        WebView webView = new WebView();
        webView.getEngine().loadContent("<html><body><table border='1' id='table'>"+
                    "<tr><th>Name</th><th>Value</th></tr></table></body></html>");

        TextField nameTF = new TextField();
        TextField valueTF = new TextField();
        Button addRowButton = new Button("Add row");
        addRowButton.setOnAction(event -> {
           Document doc = webView.getEngine().getDocument();
           Element table = doc.getElementById("table");
           Element newRow = doc.createElement("tr");
           Element nameCell = doc.createElement("td");
           Element valueCell = doc.createElement("td");
           nameCell.appendChild(doc.createTextNode(nameTF.getText()));
           valueCell.appendChild(doc.createTextNode(valueTF.getText()));
           newRow.appendChild(nameCell);
           newRow.appendChild(valueCell);
           table.appendChild(newRow);

           nameTF.setText("");
           valueTF.setText("");
        });

        HBox controls = new HBox(5, nameTF, valueTF, addRowButton);
        controls.setAlignment(Pos.CENTER);
        controls.setPadding(new Insets(5));

        BorderPane root = new BorderPane(webView, null, null, controls, null);
        Scene scene = new Scene(root, 600, 400);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

关于JavaFX HTML 节点元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25604756/

相关文章:

java - 如果在 Junit 上测试失败则运行方法

android - 如何避免缩放android webview

javascript - 将文本从 C# 插入到 webview - UWP

android - WebView 和 Button 的 LinearLayout

javafx - 如何确定JavaFX应用程序所需的FXML文件,CSS文件,图像和其他资源的正确路径?

java - Google Maps API 在 Eclipse 中工作,但在导出为 JAR 时无法工作

java - 具有打包的 Maven 依赖项的 IntelliJ JavaFX 构建 Artifact

java - 如何使用正则表达式替换字符串

Java : How to do aggregation over a list supporting min, 每组中的最大值、平均值、最后一种聚合

java.lang.NoSuchMethodError : javax. persistence.JoinColumn.foreignKey