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(); } }