import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Random; import javax.swing.*; public class FormCatamaran { Canvas canv; private DrawningCatamaran DrawningCatamaran; private AbstractStrategy _abstractStrategy; private JButton UpButton; private JButton LeftButton; private JButton RightButton; private JButton DownButton; private JButton CreateButton; private JButton CreateButtonPro; final int pictureBoxWidth = 885; final int pictureBoxHeight = 462; public void Draw() { canv.repaint(); } public FormCatamaran() { JFrame CatamaranFrame = new JFrame(); UpButton = new JButton("↑"); LeftButton = new JButton("←"); RightButton = new JButton("→"); DownButton = new JButton("↓ "); CreateButton = new JButton("Создать"); CreateButtonPro = new JButton("Создать про"); JButton buttonStep = new JButton("Шаг"); JComboBox comboBoxStrategy = new JComboBox( new String[] {"Довести до центра","Довести до края", }); buttonStep.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (DrawningCatamaran == null) { return; } if (comboBoxStrategy.isEnabled()) { switch (comboBoxStrategy.getSelectedIndex()) { case 0: _abstractStrategy = new MoveToCenter(); break; case 1: _abstractStrategy = new MoveToBorder(); break; default: _abstractStrategy = null; break; } ; if (_abstractStrategy == null) { return; } _abstractStrategy.SetData(new DrawningObjectCatamaran(DrawningCatamaran), pictureBoxWidth, pictureBoxHeight); comboBoxStrategy.setEnabled(false); } if (_abstractStrategy == null) { return; } _abstractStrategy.MakeStep(); Draw(); if (_abstractStrategy.GetStatus() == Status.Finish) { comboBoxStrategy.setEnabled(true); _abstractStrategy = null; } } }); CreateButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { Random random = new Random(); DrawningCatamaran = new DrawningCatamaran(random.nextInt(200,1000), random.nextDouble(1000,3000), Color.getHSBColor(random.nextInt(301), random.nextInt(301), random.nextInt(301)), Color.getHSBColor(random.nextInt(301), random.nextInt(301), random.nextInt(301)), pictureBoxWidth, pictureBoxHeight, random.nextBoolean(), random.nextBoolean()); canv.DrawningCatamaran = DrawningCatamaran; comboBoxStrategy.enable(true); Draw(); } }); CreateButtonPro.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Random random = new Random(); DrawningCatamaran = new DrawningCatamaranPro(random.nextInt(200,1000), random.nextDouble(1000,3000), Color.getHSBColor(random.nextInt(301), random.nextInt(301), random.nextInt(301)), Color.getHSBColor(random.nextInt(301), random.nextInt(301), random.nextInt(301)), pictureBoxWidth, pictureBoxHeight, random.nextBoolean(), random.nextBoolean(), Color.getHSBColor(random.nextInt(301), random.nextInt(301), random.nextInt(301)), random.nextBoolean(), random.nextBoolean()); canv.DrawningCatamaran = DrawningCatamaran; comboBoxStrategy.enable(true); Draw(); } }); RightButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if (DrawningCatamaran.EntityCatamaran() == null) { return; } DrawningCatamaran.MoveTransport(DirectionType.Right); Draw(); } }); LeftButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if (DrawningCatamaran.EntityCatamaran() == null) return; DrawningCatamaran.MoveTransport(DirectionType.Left); Draw(); } }); UpButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if (DrawningCatamaran.EntityCatamaran() == null) return; DrawningCatamaran.MoveTransport(DirectionType.Up); Draw(); } }); DownButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if (DrawningCatamaran.EntityCatamaran() == null) return; DrawningCatamaran.MoveTransport(DirectionType.Down); Draw(); } }); CatamaranFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); CatamaranFrame.setSize(900, 500); CatamaranFrame.setLayout(null); CatamaranFrame.setTitle("Form Catamaran"); CreateButtonPro.setBounds(120, 401, 120, 40); CreateButton.setBounds(12, 401, 90, 40); RightButton.setBounds(830, 391, 50, 50); LeftButton.setBounds(718, 391, 50, 50); UpButton.setBounds(774, 335, 50, 50); DownButton.setBounds(774, 391, 50, 50); comboBoxStrategy.setBounds(719, 12, 151, 28); buttonStep.setBounds(768, 46, 94, 29); canv = new Canvas(); canv.setSize(pictureBoxWidth, pictureBoxHeight); CatamaranFrame.add(canv); CatamaranFrame.add(comboBoxStrategy); CatamaranFrame.add(UpButton); CatamaranFrame.add(DownButton); CatamaranFrame.add(LeftButton); CatamaranFrame.add(RightButton); CatamaranFrame.add(CreateButton); CatamaranFrame.add(CreateButtonPro); CatamaranFrame.add(buttonStep); CatamaranFrame.setVisible(true); } } class Canvas extends JComponent { public DrawningCatamaran DrawningCatamaran; public Canvas() { } public void paintComponent(Graphics g) { if (DrawningCatamaran == null) { return; } super.paintComponents(g); Graphics2D g2d = (Graphics2D) g; DrawningCatamaran.DrawnCatamaran(g2d); super.repaint(); } }