From bcc4a0d32f62a7589281dca7426d836617014b5c Mon Sep 17 00:00:00 2001 From: dex_moth Date: Tue, 28 Nov 2023 12:02:52 +0400 Subject: [PATCH] =?UTF-8?q?=D0=B3=D0=BE=D1=82=D0=BE=D0=B2=D0=BE!!!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/FormAirbus.java | 1 - src/FormAirbusCollection.java | 75 +++++++++++++++++------ src/Generics/AirbusGenericCollection.java | 8 +++ 3 files changed, 63 insertions(+), 21 deletions(-) diff --git a/src/FormAirbus.java b/src/FormAirbus.java index 2539d48..f91c96c 100644 --- a/src/FormAirbus.java +++ b/src/FormAirbus.java @@ -74,7 +74,6 @@ public class FormAirbus extends JFrame { buttonDown.setIcon(new ImageIcon("images\\KeyDown.png")); setSize(800,500); - setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLayout(null); buttonCreateAirbus.setBounds(12, 355, 130, 25); diff --git a/src/FormAirbusCollection.java b/src/FormAirbusCollection.java index 82417ab..f24d281 100644 --- a/src/FormAirbusCollection.java +++ b/src/FormAirbusCollection.java @@ -26,9 +26,11 @@ public class FormAirbusCollection extends JFrame { // работа с наборами private JButton buttonAddStorage; private JButton buttonDeleteStorage; + private JButton buttonGetDeleted; private JTextField textFieldStorage; private JList listStorage; private DefaultListModel listModel; + LinkedList linkedListDeleted; private JTextField textFieldNumber; @@ -37,8 +39,9 @@ public class FormAirbusCollection extends JFrame { FormAirbusCollection() { listModel = new DefaultListModel(); listStorage = new JList(listModel); - //_airbus = new AirbusGenericCollection (pictureBoxWidth, pictureBoxHeight); + _airbus = new AirbusGenericCollection (pictureBoxWidth, pictureBoxHeight); _storage = new AirbusGenericStorage(pictureBoxWidth, pictureBoxHeight); + linkedListDeleted = new LinkedList(); canvas = new Canvas(); JFrame frame = new JFrame("Коллекция аэробусов"); @@ -53,6 +56,8 @@ public class FormAirbusCollection extends JFrame { buttonDeleteAirbus.setMargin(new Insets(0, 0, 0, 0)); buttonUpdate = new JButton("Обновить"); buttonUpdate.setMargin(new Insets(0, 0, 0, 0)); + buttonGetDeleted = new JButton("Загрузить удалёнки"); + buttonGetDeleted.setMargin(new Insets(0, 0, 0, 0)); buttonGenerateAirbus = new JButton("Форма генерации"); buttonGenerateAirbus.setMargin(new Insets(0,0,0,0)); @@ -71,7 +76,8 @@ public class FormAirbusCollection extends JFrame { textFieldNumber.setBounds(pictureBoxWidth, buttonAddAirbus.getY()+30, 120, 25); buttonDeleteAirbus.setBounds(pictureBoxWidth, textFieldNumber.getY()+30, 120, 25); buttonUpdate.setBounds(pictureBoxWidth, buttonDeleteAirbus.getY()+30, 120, 25); - buttonGenerateAirbus.setBounds(pictureBoxWidth, buttonUpdate.getY()+30, 120, 25); + buttonGetDeleted.setBounds(pictureBoxWidth, buttonUpdate.getY()+30, 120, 25); + buttonGenerateAirbus.setBounds(pictureBoxWidth, buttonGetDeleted.getY()+30, 120, 25); canvas.setBounds(0,0,pictureBoxWidth, pictureBoxHeight); add(canvas); @@ -83,12 +89,14 @@ public class FormAirbusCollection extends JFrame { add(buttonDeleteAirbus); add(buttonUpdate); add(buttonGenerateAirbus); + add(buttonGetDeleted); add(textFieldNumber); setVisible(true); // логика формы buttonAddStorage.addActionListener(AddStorageListener); buttonDeleteStorage.addActionListener(DeleteStorageListener); + buttonGetDeleted.addActionListener(GetDeletedListener); listStorage.addListSelectionListener(listSelectionListener); buttonAddAirbus.addActionListener(AddAirbusListener); @@ -106,9 +114,6 @@ public class FormAirbusCollection extends JFrame { { listModel.addElement(_storage.Keys().get(i)); } - for (String key : _storage.Keys()) { - listModel.addElement(key); - } if (listModel.size() > 0 && (index == -1 || index >= listModel.size())) { listStorage.setSelectedIndex(0); @@ -156,6 +161,23 @@ public class FormAirbusCollection extends JFrame { ReloadObject(); } }; + + // загрузить удалёнки + ActionListener GetDeletedListener = new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + if (linkedListDeleted.size() == 0) + { + JOptionPane.showMessageDialog(null, "Нет удалённых аэробусов", "Информация", JOptionPane.INFORMATION_MESSAGE); + return; + } + + FormAirbus form = new FormAirbus(); + form._drawningAirbus = linkedListDeleted.getLast(); + linkedListDeleted.removeLast(); + canvas.repaint(); + } + }; // конец секции работы с наборами ActionListener OpenGenerationForm = new ActionListener() @@ -172,18 +194,26 @@ public class FormAirbusCollection extends JFrame { { @Override public void actionPerformed(ActionEvent e) { - FormAirbus form = new FormAirbus(); + + if (listStorage.getSelectedIndex() == -1) + return; + + var obj = _storage.get(listStorage.getSelectedValue()); + if (obj == null) + return; + // выбор аэробуса на второй форме + FormAirbus form = new FormAirbus(); form.buttonSelectAirbus.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { + DrawningAirbus selectedAirbus = form._drawningAirbus; form.dispose(); if (selectedAirbus != null) { - if (_airbus.Add(selectedAirbus) != -1) { + if (obj.Add(selectedAirbus) != -1) { JOptionPane.showMessageDialog(null, "Объект добавлен"); - _airbus.ShowAirbus(); canvas.repaint(); } else { JOptionPane.showMessageDialog(null, "Не удалось добавить объект", "Ошибка", JOptionPane.ERROR_MESSAGE); @@ -196,6 +226,7 @@ public class FormAirbusCollection extends JFrame { } }; + // удалить аэробус ActionListener DeleteAirbusListener = new ActionListener() { @Override @@ -214,11 +245,19 @@ public class FormAirbusCollection extends JFrame { return; try { - int pos = Integer.parseInt(textFieldStorage.getText()); - var deleted = obj.Remove(pos); + int pos = Integer.parseInt(textFieldNumber.getText()); + // запоминаем удалёнку + DrawningAirbus deleted = obj.GetT(pos); + if (obj.Remove(pos)) { // добавить в список удалёнок - JOptionPane.showMessageDialog(null, "Объект удален", "Информация", JOptionPane.INFORMATION_MESSAGE); - canvas.repaint(); + linkedListDeleted.add(deleted); + JOptionPane.showMessageDialog(null, "Объект удален", "Информация", JOptionPane.INFORMATION_MESSAGE); + canvas.repaint(); + } + else + { + JOptionPane.showMessageDialog(null, "Не удалось удалить объект", "Информация", JOptionPane.INFORMATION_MESSAGE); + } } catch (Exception ex) { @@ -228,21 +267,17 @@ public class FormAirbusCollection extends JFrame { } }; + // обновить ActionListener UpdateAirbusListener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - _airbus.ShowAirbus(); canvas.repaint(); } }; class Canvas extends JComponent { - public AirbusGenericCollection airbus; - - public Canvas() { - airbus = _airbus; - } + public Canvas() {} public void paintComponent(Graphics g) { super.paintComponents(g); @@ -255,8 +290,8 @@ public class FormAirbusCollection extends JFrame { if (obj == null) return; - if (airbus.ShowAirbus() != null) - g.drawImage(airbus.ShowAirbus(), 0, 0, this); + if (obj.ShowAirbus() != null) + g.drawImage(obj.ShowAirbus(), 0, 0, this); super.repaint(); } diff --git a/src/Generics/AirbusGenericCollection.java b/src/Generics/AirbusGenericCollection.java index bd99c2b..c5eee83 100644 --- a/src/Generics/AirbusGenericCollection.java +++ b/src/Generics/AirbusGenericCollection.java @@ -45,6 +45,14 @@ public class AirbusGenericCollection