PIbd-22_Isaeva_A.I._Airbus_.../src/FormAirbusCollection.java
2023-11-26 19:10:56 +04:00

155 lines
5.9 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import Drawnings.DrawningAirbus;
import Generics.AirbusGenericCollection;
import MovementStrategy.DrawningObjectAirbus;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class FormAirbusCollection extends JFrame {
Canvas canvas;
static int pictureBoxWidth = 650;
static int pictureBoxHeight = 460;
JButton buttonAddAirbus;
JButton buttonDeleteAirbus;
JButton buttonUpdate;
// открыть форму генерации
private JButton buttonGenerateAirbus;
JTextField textFieldNumber = new JTextField();
private AirbusGenericCollection<DrawningAirbus, DrawningObjectAirbus> _airbus;
FormAirbusCollection() {
canvas = new Canvas();
JFrame frame = new JFrame("Коллекция аэробусов");
_airbus = new AirbusGenericCollection<DrawningAirbus, DrawningObjectAirbus> (pictureBoxWidth, pictureBoxHeight);
canvas._airbus = _airbus;
buttonAddAirbus = new JButton("Добавить аэробус");
buttonAddAirbus.setMargin(new Insets(0, 0, 0, 0));
textFieldNumber = new JTextField();
buttonDeleteAirbus = new JButton("Удалить аэробус");
buttonDeleteAirbus.setMargin(new Insets(0, 0, 0, 0));
buttonUpdate = new JButton("Обновить");
buttonUpdate.setMargin(new Insets(0, 0, 0, 0));
buttonGenerateAirbus = new JButton("Форма генерации");
buttonGenerateAirbus.setMargin(new Insets(0,0,0,0));
setSize(800,500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(null);
buttonAddAirbus.setBounds(pictureBoxWidth, 20, 120, 25);
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);
canvas.setBounds(0,0,pictureBoxWidth, pictureBoxHeight);
add(canvas);
add(buttonAddAirbus);
add(buttonDeleteAirbus);
add(buttonUpdate);
add(buttonGenerateAirbus);
add(textFieldNumber);
setVisible(true);
// логика формы
buttonAddAirbus.addActionListener(AddAirbusListener);
buttonDeleteAirbus.addActionListener(DeleteAirbusListener);
buttonUpdate.addActionListener(UpdateAirbusListener);
buttonGenerateAirbus.addActionListener(OpenGenerationForm);
}
ActionListener OpenGenerationForm = new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e) {
FormGenerationAirbus form = new FormGenerationAirbus();
}
};
ActionListener AddAirbusListener = new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e) {
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) {
JOptionPane.showMessageDialog(null, "Объект добавлен");
_airbus.ShowAirbus();
canvas.repaint();
} else {
JOptionPane.showMessageDialog(null, "Не удалось добавить объект", "Ошибка", JOptionPane.ERROR_MESSAGE);
canvas.repaint();
}
}
}
}
);
}
};
ActionListener DeleteAirbusListener = new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e) {
int pos;
try {
pos = Integer.parseInt(textFieldNumber.getText());
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, "Ошибка ввода", "Ошибка", JOptionPane.ERROR_MESSAGE);
return;
}
Object[] options= {"да", "нет"};
if (JOptionPane.showOptionDialog(null, "Удалить объект?", "Удаление", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, new Object[] { "Да", "Нет"}, "Да")
== JOptionPane.NO_OPTION)
{
return;
}
if (_airbus.Remove(pos) != false)
{
_airbus.ShowAirbus();
canvas.repaint();
JOptionPane.showMessageDialog(null, "Объект удален");
} else {
JOptionPane.showMessageDialog(null, "Не удалось удалить объект", "Ошибка", JOptionPane.ERROR_MESSAGE);
}
}
};
ActionListener UpdateAirbusListener = new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e) {
_airbus.ShowAirbus();
canvas.repaint();
}
};
class Canvas extends JComponent {
public AirbusGenericCollection<DrawningAirbus, DrawningObjectAirbus> _airbus;
public Canvas() {
}
public void paintComponent(Graphics g) {
super.paintComponents(g);
if (_airbus.ShowAirbus() != null) {
g.drawImage(_airbus.ShowAirbus(), 0, 0, this);
}
super.repaint();
}
}
}