194 lines
7.5 KiB
Java
194 lines
7.5 KiB
Java
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();
|
||
}
|
||
}
|