import javax.swing.*; import java.awt.*; import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; import java.util.Random; public class FormTracktor extends JDialog { private JPanel ContentPanel; private JButton buttonCreate; private JLabel speedLabel; private JLabel weightLabel; private JLabel colorLabel; private JButton buttonLeft; private JButton buttonDown; private JButton buttonRight; private JButton buttonUp; private JPanel pictureBox; private JButton buttonCreateModif; private JButton buttonSelect; private DrawningTracktor _tracktor; private DrawningTracktor selectedTracktor; public FormTracktor(){ setTitle("Трактор"); setContentPane(ContentPanel); setSize(800, 500); // Обработка нажатия кнопки "Создать" buttonCreate.addActionListener(e->{ Random rnd = new Random(); Color color = JColorChooser.showDialog(this, "Цвет", new Color(rnd.nextInt(0, 256), rnd.nextInt(0, 256), rnd.nextInt(0, 256))); if (color == null) { color = new Color(rnd.nextInt(0, 256), rnd.nextInt(0, 256), rnd.nextInt(0, 256)); } _tracktor = new DrawningTracktor(rnd.nextInt(100, 300), rnd.nextInt(1000, 2000), color, rnd.nextInt(3,8)); setData(); }); // Обработка нажатия кнопки "Модификация" buttonCreateModif.addActionListener(e->{ Random rnd = new Random(); Color color = JColorChooser.showDialog(this, "Основной цвет", Color.white); if (color == null) { color = new Color(rnd.nextInt(0, 256), rnd.nextInt(0, 256), rnd.nextInt(0, 256)); } Color dopColor = JColorChooser.showDialog(this, "Дополнительный цвет", Color.white); if (dopColor == null) { dopColor = new Color(rnd.nextInt(0, 256), rnd.nextInt(0, 256), rnd.nextInt(0, 256)); } _tracktor = new DrawningTrackedVehicle( rnd.nextInt(100, 300), rnd.nextInt(1000, 2000), color, rnd.nextInt(3,8), dopColor, rnd.nextBoolean(), rnd.nextBoolean() ); setData(); }); buttonUp.addActionListener(e->{ if (_tracktor != null){ _tracktor.MoveTransport(Direction.Up); repaint(); } }); buttonLeft.addActionListener(e->{ if (_tracktor != null){ _tracktor.MoveTransport(Direction.Left); repaint(); } }); buttonDown.addActionListener(e->{ if (_tracktor != null){ _tracktor.MoveTransport(Direction.Down); repaint(); } }); buttonRight.addActionListener(e->{ if (_tracktor != null){ _tracktor.MoveTransport(Direction.Right); repaint(); } }); buttonSelect.addActionListener(e->{ selectedTracktor = _tracktor; dispose(); }); pictureBox.addComponentListener(new ComponentAdapter() { @Override public void componentResized(ComponentEvent e) { super.componentResized(e); if (_tracktor != null){ _tracktor.ChangeBorders(e.getComponent().getWidth(), e.getComponent().getHeight()); repaint(); } } }); } private void setData() { Random rnd = new Random(); _tracktor.SetPosition(rnd.nextInt(10, 100), rnd.nextInt(10, 100), pictureBox.getWidth(), pictureBox.getHeight()); speedLabel.setText("Скорость: " + _tracktor.getTracktor().getSpeed()); weightLabel.setText("Вес: " + _tracktor.getTracktor().getWeight()); colorLabel.setText("Цвет: " + String.format("%h",_tracktor.getTracktor().getBodyColor())); repaint(); } public DrawningTracktor getSelectedTracktor() { return selectedTracktor; } @Override public void paint(Graphics g){ super.paint(g); Graphics2D g2d = (Graphics2D)pictureBox.getGraphics(); if (_tracktor != null){ _tracktor.DrawTransport(g2d); } } }