только что начал использовать Serializable-штуку, я хочу сохранить пару списков и некоторые другие объекты, но я не могу понять, что-то правильно.
У меня есть несколько JList со своим собственным «DefaultListModel», который я использую для сортировки вещей в списке, я вызываю класс SortModel, когда я запускаю программу, я делаю это:
SortModel sortModel = new SortModel();
JList jList = new JList(sortModel);
Затем, когда программа запускается, объекты добавляются и сортируются в соответствии с указанными потребностями, а теперь, когда я сохраняю списки и загружаю их снова, они пусты.
Я также сохраняю объект класса, который содержит фон для программы (пользователь сам выбирает один), после сохранения мне нужно снова добавить его в программу (объект, в котором хранится фон), мне нужно чтобы добавить его в программу снова, не только загрузить его «как есть», плюс у меня есть некоторые объекты, которые я добавил к этому объекту со своими собственными слушателями. После того, как мне каким-то образом удалось загрузить его, объекты есть, но я не могу их использовать, поэтому я полагаю, что слушатели не сохраняются?
*, объясняющий редактирование
Класс, который является программой, расширяет JFrame, в этом нет ничего смешного.
«Фоновый объект» (назовите его map) расширяет JComponent, я добавляю это (пока назовем это программой) ... и программа выскакивает с изображением, которое она содержит. Затем на эту карту я добавляю объекты, которые также расширяют JComponent (назовите их точками), точки назначаются их собственным слушателям, прежде чем они будут добавлены, слушатели могут не быть «настоящими» слушателями, но они действуют так же, они "MouseAdapter" это что-то меняет?
/ объяснение редактирования *
* редактирование кода *
код для сохранения:
FileOutputStream fOut = new FileOutputStream("testFile.mpd");
ObjectOutputStream outSt = new ObjectOutputStream(fOut);
outSt.writeObject(savedMap);
"testFile.mpd" - это то, на что это похоже, я уверен, что .mpd не должен иметь значения, вы можете создавать свои собственные форматы, верно? :) (основной класс называется Mappedoodle, .mpd звучит разумно, нет?)
«saveMap» является объектом указанного Mappedoodle и содержит все списки и другую информацию, необходимую для сохранения.
код для загрузки:
FileInputStream fIn = new FileInputStream("testFile.mpd");
ObjectInputStream inSt = new ObjectInputStream(fIn);
Mappedoodle openedMap = (Mappedoodle)inSt.readObject();
Информация в openMap используется (ну ... так и должно быть ...) для перезаписи определенных вещей в программе.
* / редактирование кода *
Добавить все обратно в этот объект, даже добавить все обратно в списки не будет так сложно, так как это всего лишь несколько списков и несколько циклов, но я чувствую, что я просто не получаю Serializable ^^ так, кто-то хочет попытаться объяснить, почему не все спасается? И если это так, почему я не могу получить к нему доступ? Но если я могу, как? :)
Я не знаю, какой еще код должен быть релевантным, скажите, пожалуйста, какая дополнительная информация вам понадобится, чтобы помочь мне решить эту проблему, вставка всей программы будет очень грязной, поскольку в ней 11 классов и довольно много строк. *
Спасибо, <3 </p>