有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JavaFXHTML节点元素

如何将新的HTMLTableRowElement添加到HTMLTableElement,将HtmlListElement添加到HtmlListElement

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

谢谢


共 (2) 个答案

  1. # 1 楼答案

    您可以使用org.w3c.domAPI(它是核心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);
        }
    }
    
  2. # 2 楼答案

    假设您使用javafxweb视图添加这些元素,那么我建议您构建整个页面,或者通过javascript调用添加所需的组件,因为Web视图为您提供了执行js方法的js引擎。 我不确定场景生成器是否支持在web视图上进行自定义