Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.12.2015, 16:16   #1
yulia
Форумчанин
 
Аватар для yulia
 
Регистрация: 24.03.2007
Сообщений: 314
По умолчанию десериализация DefaultListModel

Здравствуйте!

У меня не получается десериализировать DefaultListModel. Точнее он вроде как достается из файла, т.к. при прямом обращении к его первому элементу, он спокойно выводится в JText, например, а вот в JList не выводится. Я что-то упускаю, но не могу понять что. Помогите, пожалуйста, вот код:
Код:
public class Dialog9Home extends JFrame {

	 File curentFile = null;
  JTextField fldi = new JTextField(25);
  JTextField fldo = new JTextField(25);
  DefaultListModel<Person> array1 = new DefaultListModel<Person>();
 
  
  DefaultListModel<Person> createArray(Person s) {
	  array1.addElement(s);;
	  return array1;
  }
    
  Dialog9Home() {
     super("Home Work (Lesson 9)");
     try  {
       UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
     }
     catch(Exception e) {
     }

    
    JList list = new JList(array1);
    JScrollPane scroll = new JScrollPane(list);
   
           
    btnNew.addActionListener(new ActionListener(){
          public void actionPerformed(ActionEvent e) {
        	  Person person = new Person(fldi.getText(), fldo.getText());
        	  fldi.setText(" ");
        	  fldo.setText(" ");
              createArray(person);
            
          }
        });
    
    btnOpen.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e) {
         open();
        }
      });
    
    btnSave.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e) {
         save();
        }
      });
         
    WindowListener wndCloser = new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
        System.exit(0);
      }
    };
    addWindowListener(wndCloser);

    setVisible(true);
  }
  
  public void open() {
	  JFileChooser fc = new JFileChooser();
      fc.setAcceptAllFileFilterUsed(false);
      ExtFileFilter ff1 = new ExtFileFilter("ser", "*.ser");
      fc.addChoosableFileFilter(ff1);
      ObjectInputStream in = null;
      if( fc.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
    	  curentFile = fc.getSelectedFile();
      try {
          in = new ObjectInputStream(new FileInputStream(curentFile));
          array1 = (DefaultListModel<Person>)in.readObject();
      } catch ( IOException ex ) {
          ex.printStackTrace();
      } catch ( Exception ex ) {
          ex.printStackTrace();
      } finally {
           if ( in != null )
               try {
                   in.close();
               } catch ( IOException ex ) {
                   ex.printStackTrace();
               }
      }
      }
   }
  
  public void save() {
	  JFileChooser fc = new JFileChooser();
      fc.setAcceptAllFileFilterUsed(false);
      ExtFileFilter ff1 = new ExtFileFilter("ser", "*.ser");
      fc.addChoosableFileFilter(ff1);
      ObjectOutputStream out = null;
      if( fc.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) {
    	  curentFile = fc.getSelectedFile();
    	 try {
              out = new ObjectOutputStream(new FileOutputStream(curentFile));
              out.writeObject(array1);
         } catch ( IOException ex ) {
              ex.printStackTrace();
         } finally {
              if ( out != null )
                  try {
                      out.close();
                  } catch ( IOException ex ) {
                      ex.printStackTrace();
                  }
         }
          }
  }

  public static void main(String[] args) {
    new Dialog9Home();
  }
}
Person.java
Код:
public class Person implements Serializable, Comparable {

    private String name;
    private String phone;

    Person(String name, String phone) {
        this.name = name;
        this.phone = phone;
    }

    Person() {
        this(null, null);
    }

    String getName() {
        return name;
    }

    String getPhone() {
        return phone;
    }

	@Override
	public int compareTo(Object arg0) {
	    return name.compareTo(((Person)arg0).name);
	}
	
		public String toString() {
		    return name + " " + phone;
	}
}
yulia вне форума Ответить с цитированием
Старый 29.12.2015, 16:39   #2
yulia
Форумчанин
 
Аватар для yulia
 
Регистрация: 24.03.2007
Сообщений: 314
По умолчанию

нашла решение указывать явным образом
Код:
list.setListData(array1.toArray());
Не знаю только насколько это правильно, т.к. думаю, что ошибка была в другом месте, а это просто ее обход.
yulia вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
десериализация Python unbanned Python 0 05.06.2013 15:18
Десериализация alexa2352 Microsoft Office Excel 2 22.06.2012 18:16
Десериализация Selestis Общие вопросы C/C++ 6 02.02.2011 16:02
C# и Xml десериализация DeCo Общие вопросы .NET 2 17.03.2010 00:55
сериализация и десериализация radiantor Работа с сетью в Delphi 7 02.08.2008 00:27