Как сохранить переменные после закрытия jframe и его повторного открытия?

Как я могу сохранить информацию, введенную в каждое текстовое поле, чтобы после закрытия приложения оно помнило, когда я в следующий раз открываю приложение, при вводе в текстовое поле оно помнит, что было помещено туда раньше?

Я знаю об акте создания текстового файла, а затем в следующий раз, когда он открывается, он читает этот файл. я не уверен, что это решение для этого, но если это так, я не знаю, как бы я это сделал. Код ниже:

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BoxLayout;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;

public class RecipeFinder {
public static void main(String[] args) {

//JFrame
    JFrame frame = new JFrame("The Recipe Finder");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setPreferredSize(new Dimension(500,400));


//JPanel
    JPanel entry = new JPanel();
    entry.setLayout(new BoxLayout(entry, BoxLayout.Y_AXIS));

//JLabel
    JLabel insert = new JLabel("Insert Food/Ingredients");
    entry.add(insert);

//JTextField(s)
    JTextField foodOne = new JTextField();
    foodOne.setPreferredSize(new Dimension(200,24));
    entry.add(foodOne);
    JTextField foodTwo = new JTextField();
    foodTwo.setPreferredSize(new Dimension(200,24));
    entry.add(foodTwo);

//JButton(s)
    JButton addTextBox = new JButton("Add");
    addTextBox.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            JTextField newBox = new JTextField();
            newBox.setPreferredSize(new Dimension(200,24));
            entry.add(newBox);
            entry.revalidate();
            frame.invalidate();
        }
    });
    JButton search = new JButton("Search Recipes");
    JPanel buttonPanel = new JPanel();
    buttonPanel.add(addTextBox);
    buttonPanel.add(search);
    JPanel rootPanel = new JPanel();
    rootPanel.setLayout(new BorderLayout());
    rootPanel.add(entry, BorderLayout.CENTER);
    rootPanel.add(buttonPanel, BorderLayout.SOUTH);

    JScrollPane rootEntry = new JScrollPane(rootPanel);
    rootEntry.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
    rootEntry.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);


//FrameWork
    frame.add(rootEntry);
    frame.pack();
    frame.setVisible(true);

}

}

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
123
1

Ответы 1

Самый простой способ сделать это - сериализация Java. Вам нужен класс держателя, реализующий сериализуемый интерфейс. Это может быть pojo со строковыми полями или List для любого количества строк. Затем вы заполняете этот объект данными из текстовых полей. Заполненный объект можно сохранять и восстанавливать на/с диска, как описано здесь Как писать и читать сериализованные объекты Java в файл

Другие вопросы по теме