Вы можете, но подобно тому, как методы свинга Java принимают JPanel
s или другие компоненты Swing, такая функция, как appendChild
, принимает объекты Node. Вы отправляете функцию в appendChild
, и как она будет знать, как ее принять?
Примеры создания веб-сайтов, как вы описали:
var myDiv = document.createElement('div');
myDiv.id = "mydiv";
var myTextbox = document.createElement('input');
myTextbox.type = 'text';
myTextbox.value = 'some value';
myDiv.appendChild(myTextbox);
document.body.appendChild(myDiv);
Таким образом, вы создаете отдельные элементы DOM и имеют ссылки на них, похожий на создание экземпляра компонентов Swing. Эти элементы могут быть такими, как div
s, которые могут использоваться аналогично JPanel
s или input
, аналогичным JTextField
. И затем вы используете эти ссылки, чтобы объединить их вместе для создания графического интерфейса.
Чтобы попытаться проиллюстрировать, как работает document.createElement
, как вы, кажется, все еще запутались в комментариях, сравните его с методом Java, подобным этому (Just FYI, это может быть не строго точно, поскольку я не использовал Swing через некоторое время):
JComponent createComponent(string componentType) {
if(componentType.equals("JTextField")) {
return new JTextField(10);
} else if(componentType.equals("JFileChooser")) {
// return filechooser
}
//etc.
}
Как вы можете видеть, вызов метода createComponent
, а также предоставление ему строковое значение того, что компонент вы хотите, возвращается к вам фактический инстанцированный пустой компонент. Вы не определили никаких конструкторов. Вместо этого вы размещаете ссылку на нее и делаете с ней все, что хотите.
JS не поддерживает это из коробки, вам нужно будет заглянуть в рамки, такие как Angular или ReactJS, чтобы делать такие вещи. – mherzig
Вам необходимо использовать API DOM - https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model – skyline3000