2016-06-22 3 views
1

Я делаю простой графический интерфейс, где JLists заполнены DefaultListModels.Маршаллинг DefaultListModel не записывает данные

У меня есть класс:

@XmlRootElement (name="data") 
@XmlAccessorType(XmlAccessType.PUBLIC_MEMBER) 
public class Data { 
    public DefaultListModel data1; 
    public DefaultListModel data2; 

И я сортировочная его обычным способом.

File file = new File("file.xml"); 
JAXBContext jaxbContext = JAXBContext.newInstance(Data.class); 
Marshaller jaxbMarshaller = jaxbContext.createMarshaller(); 
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); 
Marshaller marshaller = jaxbContext.createMarshaller();   
marshaller.marshal(this.parts, file); 

Проблема заключается в том, что файл XML выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<data> 
    <data1> 
     <size>6</size> 
    </data1> 
    <data2> 
     <size>1</size> 
    </data2> 
</data> 

Другими словами, это не сохранение данных (который представляет собой вектор строк). Связано ли это с тем фактом, что DefaultListModel не содержит фактического вектора строк? Должен ли я делать это с помощью Vector вместо этого?

+0

Я удивлен, что ему удалось дать вам элемент размера. Можете ли вы предоставить образец XML того, что вы ожидаете? –

+0

value1 значение2 ....

ответ

0

Класс DefaultListModel является базовой моделью компонента GUI (JList). Ваши бизнес-данные представлены вашим классом Data. Я предлагаю поместить туда Vector of Strings, а затем обработать их в DefaultListModel. Вы можете marshall/unmarshall, потому что структура JAXB не знает о типе DefaultListModel, но будет обрабатывать базовый тип Java.

@XmlRootElement (name="data") 
@XmlAccessorType(XmlAccessType.PUBLIC_MEMBER) 
public class Data { 
    public List<String> data1; 
    public List<String> data2; 
+0

Это было то, что я в конечном итоге делает, спасибо. –

Смежные вопросы