如何将新的 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/