2023-11-11 20:48:58 +03:00

139 lines
5.0 KiB
Java

package Trolleybus;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
public class FormTrolleybus{
private DrawingTrolleybus _drawingTrolleybus;
private JFrame frameTrolleybus;
private JPanel panelTrolleybus;
private JButton buttonCreate, buttonUp, buttonDown, buttonRight, buttonLeft;
public FormTrolleybus(){
//Само окно
frameTrolleybus = new JFrame();
frameTrolleybus.setLayout(new BorderLayout());
frameTrolleybus.setSize(900, 500);
frameTrolleybus.setTitle("Троллейбус");
frameTrolleybus.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Панель, на которую добавляю всё
panelTrolleybus = new JPanel();
panelTrolleybus.setLayout(null);
//Кнопка создания
buttonCreate = new JButton("Создать");
//Кнопка вверх
buttonUp = new JButton();
buttonUp.setIcon(new ImageIcon("Up.png"));
buttonUp.setToolTipText("buttonUp");
//Кнопка вниз
buttonDown = new JButton();
buttonDown.setIcon(new ImageIcon("Down.png"));
buttonDown.setToolTipText("buttonDown");
//Кнопка вправо
buttonRight = new JButton();
buttonRight.setIcon(new ImageIcon("Right.png"));
buttonRight.setToolTipText("buttonRight");
//Кнопка влево
buttonLeft = new JButton();
buttonLeft.setIcon(new ImageIcon("Left.png"));
buttonLeft.setToolTipText("buttonLeft");
//Размеры, позиция кнопок
buttonCreate.setBounds(10,400,90,30);
buttonUp.setBounds(800,380,30,30);
buttonDown.setBounds(800,420,30,30);
buttonLeft.setBounds(760,420,30,30);
buttonRight.setBounds(840,420,30,30);
//Добавление листенеров к кнопкам
buttonCreate.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ButtonCreate_Click(e);
}
});
buttonUp.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ButtonMove_Click(buttonUp, e);
}
});
buttonDown.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ButtonMove_Click(buttonDown, e);
}
});
buttonRight.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ButtonMove_Click(buttonRight, e);
}
});
buttonLeft.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ButtonMove_Click(buttonLeft, e);
}
});
panelTrolleybus.add(buttonCreate);
panelTrolleybus.add(buttonUp);
panelTrolleybus.add(buttonDown);
panelTrolleybus.add(buttonLeft);
panelTrolleybus.add(buttonRight);
frameTrolleybus.add(panelTrolleybus, BorderLayout.CENTER);
frameTrolleybus.setVisible(true);
}
// Метод прорисовки троллейбуса
private void Draw(){
if (_drawingTrolleybus == null) {
return;
}
Graphics g = panelTrolleybus.getGraphics();
// Очистка перед перерисовкой
panelTrolleybus.paint(g);
_drawingTrolleybus.DrawTransport(g);
}
private void ButtonCreate_Click(ActionEvent e) {
Random random = new Random();
_drawingTrolleybus = new DrawingTrolleybus();
_drawingTrolleybus.Init(random.nextInt(100, 300),
random.nextInt(1000, 3000),
new Color(random.nextInt(0, 256), random.nextInt(0, 256), random.nextInt(0, 256)),
new Color(random.nextInt(0, 256), random.nextInt(0, 256), random.nextInt(0, 256)),
random.nextBoolean(),
random.nextBoolean(),
panelTrolleybus.getWidth(), panelTrolleybus.getHeight());
_drawingTrolleybus.SetPosition(random.nextInt(10, 100), random.nextInt(10, 100));
Draw();
}
protected void ButtonMove_Click(Object sender, ActionEvent e) {
if (_drawingTrolleybus == null)
{
return;
}
JButton info = (JButton)e.getSource();
String name = info.getToolTipText();
switch (name)
{
case "buttonUp":
_drawingTrolleybus.MoveTransport(DirectionType.Up);
break;
case "buttonDown":
_drawingTrolleybus.MoveTransport(DirectionType.Down);
break;
case "buttonLeft":
_drawingTrolleybus.MoveTransport(DirectionType.Left);
break;
case "buttonRight":
_drawingTrolleybus.MoveTransport(DirectionType.Right);
break;
}
Draw();
}
}