PIbd21.LyovushkinaA.A.Conta.../FormContainerShip.java
2023-10-09 23:11:13 +04:00

194 lines
7.5 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import java.awt.*;
import java.util.*;
import javax.swing.*;
import java.awt.event.*;
public class FormContainerShip {
private DrawingShip _drawingShip;
private AbstractStrategy _abstractStrategy;
Canvas canv;
public void Draw(){
canv.repaint();
}
public FormContainerShip(){
JFrame w=new JFrame ("ContainerShip");
JButton buttonCreateShip = new JButton("создать кораблик");
JButton buttonCreateContainerShip = new JButton("создать контейнеровоз");
JButton buttonStep = new JButton("шаг");
String[] items = {
"MoveToCenter", "MoveToRight-Down"
};
JComboBox comboBoxStrategy = new JComboBox(items);
comboBoxStrategy.setEditable(false);
JButton up = new JButton();
up.setBorderPainted(false);
up.setFocusPainted(false);
up.setContentAreaFilled(false);
up.setName("up");
up.setIcon(new ImageIcon("D:\\рабочий стол\\рпп\\лаб1.репозит.сложная\\PIbd21.LyovushkinaA.A.Container_ship.Complicated\\photo11.png"));
JButton down = new JButton();
down.setBorderPainted(false);
down.setFocusPainted(false);
down.setContentAreaFilled(false);
down.setName("down");
down.setIcon(new ImageIcon("D:\\рабочий стол\\рпп\\лаб1.репозит.сложная\\PIbd21.LyovushkinaA.A.Container_ship.Complicated\\photo33.png"));
JButton left = new JButton();
left.setBorderPainted(false);
left.setFocusPainted(false);
left.setContentAreaFilled(false);
left.setName("left");
left.setIcon(new ImageIcon("D:\\рабочий стол\\рпп\\лаб1.репозит.сложная\\PIbd21.LyovushkinaA.A.Container_ship.Complicated\\photo44.png"));
JButton right = new JButton();
right.setBorderPainted(false);
right.setFocusPainted(false);
right.setContentAreaFilled(false);
right.setName("right");
right.setIcon(new ImageIcon("D:\\рабочий стол\\рпп\\лаб1.репозит.сложная\\PIbd21.LyovushkinaA.A.Container_ship.Complicated\\photo22.png"));
buttonCreateShip.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e){
System.out.println(e.getActionCommand());
Random random = new Random();
_drawingShip = new DrawingShip(random.nextInt(100, 300),
random.nextInt(1000, 3000),
new Color(random.nextInt(0,256), random.nextInt(0,256), random.nextInt(0,256)),960, 560);
_drawingShip.SetPosition(random.nextInt(10, 100),random.nextInt(10, 100));
canv._drawingShip = _drawingShip;
Draw();
}
}
);
buttonCreateContainerShip.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e){
System.out.println(e.getActionCommand());
Random random = new Random();
_drawingShip = new DrawingContainerShip(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(), random.nextInt(1,4),random.nextInt(1,4),960, 560);
_drawingShip.SetPosition(random.nextInt(10, 100),random.nextInt(10, 100));
canv._drawingShip = _drawingShip;
Draw();
}
}
);
buttonStep.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
if (_drawingShip == 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
DrawningObjectShip(_drawingShip), 960,
560);
comboBoxStrategy.setEnabled(false);
}
if (_abstractStrategy == null)
{
return;
}
_abstractStrategy.MakeStep();
Draw();
if (_abstractStrategy.GetStatus() == Status.Finish)
{
comboBoxStrategy.setEnabled(true);
_abstractStrategy = null;
}
}
}
);
ActionListener actioListener = new ActionListener() {
public void actionPerformed(ActionEvent e){
System.out.println(((JButton)(e.getSource())).getName());
if (_drawingShip == null)
{
return;
}
switch(((JButton)(e.getSource())).getName()){
case "up":
_drawingShip.MoveTransport(Direction.Up);
break;
case "down":
_drawingShip.MoveTransport(Direction.Down);
break;
case "left":
_drawingShip.MoveTransport(Direction.Left);
break;
case "right":
_drawingShip.MoveTransport(Direction.Right);
break;
}
Draw();
}
};
up.addActionListener(actioListener);
down.addActionListener(actioListener);
left.addActionListener(actioListener);
right.addActionListener(actioListener);
w.setSize (1000, 600);
w.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
w.setLayout(null);
canv = new Canvas();
canv.setBounds(0, 0, 1000, 600);
buttonCreateShip.setBounds(2, 540, 200, 20);
buttonCreateContainerShip.setBounds(215, 540, 200, 20);
comboBoxStrategy.setBounds(800, 10, 150, 30);
buttonStep.setBounds(800, 45, 100, 20);
up.setBounds(900, 480, 45, 45);
down.setBounds(900, 520, 45, 45);
left.setBounds(860, 520, 45, 45);
right.setBounds(940, 520, 45, 45);
w.add(canv);
w.add(buttonCreateShip);
w.add(buttonCreateContainerShip);
w.add(comboBoxStrategy);
w.add(buttonStep);
w.add(up);
w.add(down);
w.add(left);
w.add(right);
w.setVisible (true);
}
}
class Canvas extends JComponent{
public DrawingShip _drawingShip;
public Canvas(){
}
public void paintComponent (Graphics g){
if (_drawingShip == null){
return;
}
super.paintComponents (g) ;
Graphics2D g2d = (Graphics2D)g;
_drawingShip.DrawShip(g2d);
super.repaint();
}
}