import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.Random; public class FormShip extends JDialog { private JPanel shipPane; private JLabel speedLabel; private JLabel weightLabel; private JLabel colorLabel; private JPanel pictureBox; private JButton createButton; private JButton buttonUp; private JButton buttonDown; private JButton buttonLeft; private JButton buttonRight; private JButton createAdvancedButton; public JButton buttonSelect; private DrawingShip _ship; private DrawingShip selectedShip; public FormShip() { this.setTitle("Ship"); this.setContentPane(shipPane); createButton.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)); } _ship = new DrawingShip(rnd.nextInt(100, 300), rnd.nextInt(1000, 2000), color, rnd.nextInt(1, 4)); _ship.SetPosition(10 + rnd.nextInt(90), 10 + rnd.nextInt(90), pictureBox.getWidth(), pictureBox.getHeight()); speedLabel.setText(String.format("Speed: %s", _ship.getShip().getSpeed())); weightLabel.setText(String.format("Weight: %s", _ship.getShip().getWeight())); colorLabel.setText(String.format("Color: %x", _ship.getShip().getBodyColor().getRGB())); repaint(); }); pictureBox.addComponentListener(new ComponentAdapter() { @Override public void componentResized(ComponentEvent e) { if (_ship != null) _ship.changeBorders(pictureBox.getWidth(), pictureBox.getHeight()); repaint(); } }); buttonLeft.addActionListener(e -> { if (_ship != null) _ship.moveTransport(Direction.Left); repaint(); }); buttonRight.addActionListener(e -> { if (_ship != null) _ship.moveTransport(Direction.Right); repaint(); }); buttonUp.addActionListener(e -> { if (_ship != null) _ship.moveTransport(Direction.Up); repaint(); }); buttonDown.addActionListener(e -> { if (_ship != null) _ship.moveTransport(Direction.Down); repaint(); }); createAdvancedButton.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)); } _ship = new DrawingMotorShip( rnd.nextInt(100, 300), rnd.nextInt(1000, 2000), color, rnd.nextInt(1, 4), dopColor, rnd.nextBoolean(), rnd.nextBoolean() ); _ship.SetPosition(10 + rnd.nextInt(90), 10 + rnd.nextInt(90), pictureBox.getWidth(), pictureBox.getHeight()); speedLabel.setText(String.format("Скорость: %s", _ship.getShip().getSpeed())); weightLabel.setText(String.format("Вес: %s", _ship.getShip().getWeight())); colorLabel.setText(String.format("Цвет: %x", _ship.getShip().getBodyColor().getRGB())); repaint(); }); buttonSelect.addActionListener(e -> { selectedShip = _ship; dispose(); }); } @Override public void paint(Graphics g) { super.paint(g); Graphics2D g2d = (Graphics2D) pictureBox.getGraphics(); if (_ship != null) { _ship.drawTransport(g2d); } } public DrawingShip getSelectedShip() { return selectedShip; } }