Загрузка данных


import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;

public class BankMenu extends JFrame {

    public BankMenu() {

        setTitle("Банк");
        setSize(700, 500);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setLayout(null);

        getContentPane().setBackground(new Color(20, 30, 50));

        JLabel title = new JLabel("БАНКОВСКОЕ ПРИЛОЖЕНИЕ");
        title.setBounds(170, 30, 400, 40);
        title.setForeground(Color.WHITE);
        title.setFont(new Font("Arial", Font.BOLD, 28));
        add(title);

        JButton accountsBtn = createButton("СЧЕТА", 220, 120);
        JButton cardsBtn = createButton("КАРТЫ", 220, 210);
        JButton creditsBtn = createButton("КРЕДИТЫ", 220, 300);

        add(accountsBtn);
        add(cardsBtn);
        add(creditsBtn);

        accountsBtn.addActionListener(e ->
                new CategoryFrame(
                        "Счета",
                        new String[]{
                                "Дебетовый счет - Оплата покупок",
                                "Сберегательный счет - 5% годовых",
                                "Валютный счет - Доллары и евро"
                        }
                ));

        cardsBtn.addActionListener(e ->
                new CategoryFrame(
                        "Карты",
                        new String[]{
                                "Зарплатная карта - Бесплатно",
                                "Виртуальная карта - Онлайн покупки",
                                "Премиальная карта - Кэшбэк"
                        }
                ));

        creditsBtn.addActionListener(e ->
                new CategoryFrame(
                        "Кредиты",
                        new String[]{
                                "Ипотека - 12% на 20 лет",
                                "Автокредит - 10% на 5 лет",
                                "Потребительский - 15%"
                        }
                ));

        setVisible(true);
    }

    JButton createButton(String text, int x, int y) {

        JButton btn = new JButton(text);

        btn.setBounds(x, y, 250, 50);

        btn.setBackground(new Color(0, 120, 215));
        btn.setForeground(Color.WHITE);

        btn.setFont(new Font("Arial", Font.BOLD, 18));

        btn.setFocusPainted(false);

        return btn;
    }

    public static void main(String[] args) {

        new BankMenu();
    }
}

class CategoryFrame extends JFrame {

    public CategoryFrame(String titleText, String[] services) {

        setTitle(titleText);

        setSize(700, 500);

        setLocationRelativeTo(null);

        setLayout(null);

        getContentPane().setBackground(new Color(240, 240, 240));

        JLabel title = new JLabel(titleText);

        title.setBounds(280, 20, 300, 40);

        title.setFont(new Font("Arial", Font.BOLD, 26));

        add(title);

        int y = 90;

        for(String service : services) {

            JPanel panel = new JPanel();

            panel.setLayout(null);

            panel.setBounds(80, y, 520, 80);

            panel.setBackground(Color.WHITE);

            panel.setBorder(BorderFactory.createLineBorder(Color.GRAY));

            JLabel label = new JLabel(service);

            label.setBounds(20, 10, 320, 30);

            label.setFont(new Font("Arial", Font.PLAIN, 16));

            JButton favBtn = new JButton("★ Избранное");

            favBtn.setBounds(340, 20, 150, 35);

            favBtn.setBackground(new Color(255, 200, 0));

            favBtn.setFont(new Font("Arial", Font.BOLD, 14));

            favBtn.addActionListener(e -> saveFavorite(service));

            panel.add(label);

            panel.add(favBtn);

            add(panel);

            y += 100;
        }

        setVisible(true);
    }

    private void saveFavorite(String service) {

        try {

            File file = new File("favorites.txt");

            int count = 0;

            if(file.exists()) {

                BufferedReader br =
                        new BufferedReader(
                                new FileReader(file));

                String line = br.readLine();

                if(line != null) {

                    count = Integer.parseInt(line);
                }

                br.close();
            }

            count++;

            BufferedWriter bw =
                    new BufferedWriter(
                            new FileWriter(file));

            bw.write(String.valueOf(count));

            bw.close();

            JOptionPane.showMessageDialog(
                    this,
                    service +
                            "\nДобавлено в избранное!" +
                            "\nВсего избранных: " + count
            );

        } catch(Exception e) {

            JOptionPane.showMessageDialog(
                    this,
                    "Ошибка файла"
            );
        }
    }
}