JavaFX Сохранить список элементов, используя их ID в XML-файл - PullRequest
0 голосов
/ 20 февраля 2019

Я новичок в JavaFX и не знаю, как сохранить список элементов, используя их Id, в файл XML.В моем случае это элементы ImageView, количество которых зависит от выбора пользователя (из списка).Все они имеют идентификаторы, такие как imageView1, imageView2 и т. Д., И сгруппированы в imageViewGroup.

for(int i=1; i<=numberOfImageViews;i++){
ImageView imageView = new ImageView("/path_to_image_file);
imageView.setId(imageViewId+i);
imageViewGroup.getChildren().add(imageView);
}

Все эти ImageView загружаются в панель с именем mainPane.

 FXMLLoader generateLoader = new FXMLLoader();
 generateLoader.setLocation(getClass().getResource("mainPaneAfterGenerate.fxml"));
 mainPane.getChildren().clear();
 Pane newLoadedPane = generateLoader.load();
 mainPane.getChildren().add(newLoadedPane, imageViewGroup);

К этомумомент все работает отлично.У меня есть некоторые функции после загрузки imageView, но я не буду описывать их, потому что они не влияют на операции.Важно то, что пользователь может редактировать идентификатор imageView в это время (например, imageView1 он может изменить на imageView112312), поэтому я просто хочу иметь возможность загрузить идентификатор сейчас и не раньше.Я хотел бы создать файл XML, в котором строки будут выглядеть следующим образом:

<device class="ImageView" displayName="ImageView 1" name="imageView1" />
<device class="ImageView" displayName="ImageView 2" name="imageView2" /> 
<device class="ImageView" displayName="ImageView 3" name="imageView3" /> 
etc. 

Так что в моем случае «имя» из файла XML - это imageView Id.Я создал этот файл, но у меня нет идеи, как распечатать все изображения, потому что imageView.getId () дает мне идентификатор последнего.

Element device = devicesXmlDocument.createElement("device");
devicesRoot.appendChild(device);

Attr nameDev = devicesXmlDocument.createAttribute("name");
nameDev.setValue(imageView.getId());  // it's last imageView's id
device.setAttributeNode(nameDev);

Attr classDev = devicesXmlDocument.createAttribute("class");
classDev.setValue("ImageView");
device.setAttributeNode(classDev);

Attr displayNameDev = devicesXmlDocument.createAttribute("displayName");
displayNameDev.setValue("ImageView "+ numberofimageview);  
device.setAttributeNode(displayNameDev);`
...