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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2014, 12:44   #1
Rembo88
 
Регистрация: 02.04.2014
Сообщений: 8
По умолчанию Не получается десериализовать данные из JTextField

Всем доброго времени суток!
Вопрос такой - есть десять полей ввода JTextField и есть кнопки "Сохранить" и "Восстановить".
Как сделать так чтобы данные,введённые пользователем в эти поля после нажатия на кнопку "Сохранить" сохранялись в файл на жёстком диске, а при нажатии на кнопку "Восстановить" подтягивались в эти поля обратно из файла?
P.S. читал про сериализацию/десириализацию, но сделать задуманное никак не удаётся,при нажатии на кнопку "Восстановить" данные просто не восстанавливаются.
Буду очень благодарен за пример кода,показывающего как это можно осуществить.
Заранее спасибо!
Rembo88 вне форума Ответить с цитированием
Старый 22.05.2014, 00:08   #2
buriat
Форумчанин
 
Регистрация: 28.06.2010
Сообщений: 189
По умолчанию

Выкладывайте ваш код
buriat вне форума Ответить с цитированием
Старый 22.05.2014, 01:49   #3
Rembo88
 
Регистрация: 02.04.2014
Сообщений: 8
По умолчанию

Код:
public class CategoryAndPrice extends JFrame implements Serializable {

  CategoryAndPrice() {

/**  
В этом месте создаётся фрейм и панель,задаётся менеджер компоновки и прочие настройки.
**/

/**
В этом месте создаю компоненты JLabel, обозначающие названия полей ввода.
**/
        
//Данные,которые будут вводится в эти поля
//нужно сохранять и восстанавливать
final JTextField field5A = new JTextField(10);
final JTextField field5A2 = new JTextField(10);
final JTextField field8A = new JTextField(10);
final JTextField field8A2 = new JTextField(10);
final JTextField field17A = new JTextField(10);
final JTextField field17A2 = new JTextField(10);
final JTextField field22A = new JTextField(10);
final JTextField field22A2 = new JTextField(10);
final JTextField field26A = new JTextField(10);

//Вот эти две кнопки по нажатию на которые должна происходить
//сериализация и десериализация
JButton restoreButton = new JButton("ТЕКУЩИЕ ЦЕНЫ");
JButton saveButton = new JButton("СОХРАНИТЬ");

/**
В этом месте я размещаю графические компоненты на панели
**/
	
//Вешаю слушателя на кнопку "ТЕКУЩИЕ ЦЕНЫ"
restoreButton.addActionListener(new ActionListener() {                    @Override                                                              
public void actionPerformed(ActionEvent e) {                           
try {	loadFromFile(field5A.getText(),field5A2.getText(),field8A.getText(),				  field8A2.getText(),field17A.getText(),field17A2.getText(),  
		  field22A.getText(),field22A2.getText(),field26A.getText());

} catch (ClassNotFoundException e1) {
	     e1.printStackTrace();
   }                      
  }                                                                      
});                                                                     
	
//Вешаю слушателя на кнопку "Сохранить"
saveButton.addActionListener(new ActionListener() {                    
@Override                                                              
public void actionPerformed(ActionEvent e) {                           
saveToFile(field5A.getText(),field5A2.getText(),field8A.getText(),
               field8A2.getText(),field17A.getText(),field17A2.getText(),
    field22A.getText(),field22A2.getText(),field26A.getText());                      
    }                                                                      
 });                                                                     
}

//Обработчик слушателя кнопки "ТЕКУЩИЕ ЦЕНЫ"
static void loadFromFile(String f5A,String f5A2,String f8A,
                                String f8A2,String f17A,String f17A2,
                                String f22A,String f22A2,String f26A) throws ClassNotFoundException {
	
File prices = new File("D:/софт/Всё для Java/workspace/ru.reversmetall/price.txt");
ObjectInputStream ois = null;
try{   
FileInputStream fis = new FileInputStream(prices);
ois = new ObjectInputStream(fis);
CategoryAndPrice value5A = (CategoryAndPrice)ois.readObject();
CategoryAndPrice value5A2 = (CategoryAndPrice)ois.readObject();
CategoryAndPrice value8A = (CategoryAndPrice)ois.readObject();
CategoryAndPrice value8A2 = (CategoryAndPrice)ois.readObject();
CategoryAndPrice value17A = (CategoryAndPrice)ois.readObject();
CategoryAndPrice value17A2 = (CategoryAndPrice)ois.readObject();
CategoryAndPrice value22A = (CategoryAndPrice)ois.readObject();
CategoryAndPrice value22A2 = (CategoryAndPrice)ois.readObject();
CategoryAndPrice value26A = (CategoryAndPrice)ois.readObject();
ois.close();

}catch(FileNotFoundException e) {
    e.printStackTrace(); 
}catch(IOException e) {
    e.printStackTrace();
 }
}
 
//Обработчик слушателя кнопки "СОХРАНИТЬ"
static void saveToFile(String f5A,String f5A2,String f8A,
		               String f8A2,String f17A,String f17A2,
		               String f22A,String f22A2,String f26A) {
	
File prices = new File("D:/софт/Всё для Java/workspace/ru.reversmetall/price.txt");
ObjectOutputStream os = null;
try{	  
FileOutputStream fs = new FileOutputStream(prices);
os = new ObjectOutputStream(fs);
os.writeObject(f5A);
os.writeObject(f5A2);
os.writeObject(f8A);
os.writeObject(f8A2);
os.writeObject(f17A);
os.writeObject(f17A2);
os.writeObject(f22A);
os.writeObject(f22A2);
os.writeObject(f26A);
os.close();

}catch(FileNotFoundException e) {
      e.printStackTrace(); 
   
}catch(IOException e) {
	  e.printStackTrace();

}finally {
          try {
		if (os != null) {
                os.flush();
                os.close();
               }
          } catch(IOException e) {
                 e.printStackTrace();
          }  
      }
    } 
/**
Здесь располагаю точку входа в программу(метод main)
**/
 }
Rembo88 вне форума Ответить с цитированием
Старый 22.05.2014, 12:58   #4
buriat
Форумчанин
 
Регистрация: 28.06.2010
Сообщений: 189
По умолчанию

Что-то у вас тут совсем печаль.
Зачем в loadFromFile передавать параметры? Сам метод вобще каша непонятная.

writeToFile:
взяли значения TextField-ов, записали их в файл как текст.

loadFromFile:
прочитали значениа из файла и вставили их в соответствующие поля TextField. (field5A.setText() и т.д.)
buriat вне форума Ответить с цитированием
Старый 23.05.2014, 22:56   #5
Rembo88
 
Регистрация: 02.04.2014
Сообщений: 8
По умолчанию

Спасибо за помощь!Удалось разобраться,но попутно возник вопрос,если я сохраняю данные в файл таким образом:
Код:
bw.write("5A: " + f5A + "\n");
bw.write("5A2: " + f5A2 + "\n");
Могу ли я потом вытягивать эти данные из файла по тегу "5A:","5A2" и т.д.?
Rembo88 вне форума Ответить с цитированием
Старый 24.05.2014, 12:59   #6
buriat
Форумчанин
 
Регистрация: 28.06.2010
Сообщений: 189
По умолчанию

Прямо из файла читать по тегу никак )
Как вариант - считать все в HashMap и потом "по тегу" доставать из него.
buriat вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сериализовать/десериализовать экземпляры классов в файл kspower92 C# (си шарп) 3 19.03.2014 10:15
не получается вывести данные demon-sheff Общие вопросы Delphi 1 04.04.2013 09:24
не получается записать данные из файла в массив построчно monnzz Общие вопросы C/C++ 0 14.02.2013 21:45
не получается вывести данные введенные с клавиатуры Alex_Dep Помощь студентам 0 25.02.2012 17:13
Не получается ввести данные... solomon123456789 Общие вопросы C/C++ 9 24.06.2009 23:41