Загрузка данных
import javax.swing.*;
import java.awt.*;
import java.io.*;
public class ClothesShop extends JFrame {
public ClothesShop() {
setTitle("Магазин одежды");
setSize(700, 500);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setLayout(null);
getContentPane().setBackground(new Color(35, 35, 35));
JLabel title = new JLabel("МАГАЗИН ОДЕЖДЫ");
title.setBounds(180, 30, 400, 40);
title.setForeground(Color.WHITE);
title.setFont(new Font("Arial", Font.BOLD, 30));
add(title);
JButton topBtn = createButton("ВЕРХ", 220, 120);
JButton bottomBtn = createButton("НИЗ", 220, 220);
JButton hatsBtn = createButton("ГОЛОВНЫЕ УБОРЫ", 220, 320);
JButton favBtn = createButton("ИЗБРАННОЕ", 220, 410);
add(topBtn);
add(bottomBtn);
add(hatsBtn);
add(favBtn);
topBtn.addActionListener(e ->
new CategoryFrame("Верх", new String[]{
"Худи - Теплое и стильное",
"Куртка - Осенняя коллекция",
"Футболка - Хлопок 100%"
})
);
bottomBtn.addActionListener(e ->
new CategoryFrame("Низ", new String[]{
"Джинсы - Синие классические",
"Шорты - Летняя модель",
"Спортивные штаны - Удобные"
})
);
hatsBtn.addActionListener(e ->
new CategoryFrame("Головные уборы", new String[]{
"Кепка - Черная",
"Шапка - Зимняя",
"Панама - Белая"
})
);
favBtn.addActionListener(e -> new FavoritesFrame());
setVisible(true);
}
JButton createButton(String text, int x, int y) {
JButton btn = new JButton(text);
btn.setBounds(x, y, 260, 55);
btn.setBackground(new Color(255, 120, 0));
btn.setForeground(Color.WHITE);
btn.setFont(new Font("Arial", Font.BOLD, 18));
btn.setFocusPainted(false);
return btn;
}
public static void main(String[] args) {
new ClothesShop();
}
}
class CategoryFrame extends JFrame {
public CategoryFrame(String titleText, String[] items) {
setTitle(titleText);
setSize(750, 550);
setLocationRelativeTo(null);
setLayout(null);
getContentPane().setBackground(new Color(245,245,245));
JLabel title = new JLabel(titleText);
title.setBounds(300, 20, 300, 40);
title.setFont(new Font("Arial", Font.BOLD, 28));
add(title);
JButton backBtn = new JButton("← Назад");
backBtn.setBounds(20, 20, 120, 35);
backBtn.setBackground(new Color(60,60,60));
backBtn.setForeground(Color.WHITE);
add(backBtn);
backBtn.addActionListener(e -> dispose());
int y = 90;
for(String item : items) {
JPanel panel = new JPanel();
panel.setLayout(null);
panel.setBounds(80, y, 560, 90);
panel.setBackground(Color.WHITE);
panel.setBorder(BorderFactory.createLineBorder(Color.GRAY));
JLabel label = new JLabel(item);
label.setBounds(20, 15, 320, 30);
label.setFont(new Font("Arial", Font.PLAIN, 18));
JButton favBtn = new JButton("❤ Избранное");
favBtn.setBounds(360, 25, 160, 35);
favBtn.setBackground(new Color(255, 80, 80));
favBtn.setForeground(Color.WHITE);
favBtn.addActionListener(e -> saveFavorite(item));
panel.add(label);
panel.add(favBtn);
add(panel);
y += 110;
}
setVisible(true);
}
private void saveFavorite(String item) {
try {
File file = new File("favorites.txt");
BufferedWriter bw = new BufferedWriter(new FileWriter(file, true));
bw.write(item);
bw.newLine();
bw.close();
JOptionPane.showMessageDialog(
this,
"Добавлено в избранное:\n" + item
);
} catch(Exception e) {
JOptionPane.showMessageDialog(this, "Ошибка файла");
}
}
}
class FavoritesFrame extends JFrame {
DefaultListModel<String> model = new DefaultListModel<>();
JList<String> list = new JList<>(model);
public FavoritesFrame() {
setTitle("Избранное");
setSize(500, 400);
setLocationRelativeTo(null);
setLayout(null);
JLabel title = new JLabel("❤ Избранные товары");
title.setBounds(150, 10, 300, 30);
add(title);
JScrollPane scroll = new JScrollPane(list);
scroll.setBounds(50, 50, 380, 200);
add(scroll);
JButton deleteBtn = new JButton("Удалить");
deleteBtn.setBounds(50, 270, 150, 40);
add(deleteBtn);
JButton refreshBtn = new JButton("Обновить");
refreshBtn.setBounds(250, 270, 150, 40);
add(refreshBtn);
loadFavorites();
deleteBtn.addActionListener(e -> deleteSelected());
refreshBtn.addActionListener(e -> loadFavorites());
setVisible(true);
}
private void loadFavorites() {
model.clear();
try {
File file = new File("favorites.txt");
if(!file.exists()) return;
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while((line = br.readLine()) != null) {
model.addElement(line);
}
br.close();
} catch(Exception e) {
JOptionPane.showMessageDialog(this, "Ошибка загрузки");
}
}
private void deleteSelected() {
String selected = list.getSelectedValue();
if(selected == null) return;
model.removeElement(selected);
try {
File file = new File("favorites.txt");
BufferedWriter bw = new BufferedWriter(new FileWriter(file));
for(int i = 0; i < model.size(); i++) {
bw.write(model.get(i));
bw.newLine();
}
bw.close();
} catch(Exception e) {
JOptionPane.showMessageDialog(this, "Ошибка удаления");
}
}
}