Pibd-22_Presnyakova.V.V_Cat.../FormBoat.java
2022-12-23 12:21:55 +04:00

125 lines
4.9 KiB
Java
Raw Permalink 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 javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.awt.image.BufferedImage;
import java.util.Random;
import static java.lang.Boolean.parseBoolean;
public class FormBoat extends JDialog{
public JPanel Mainpanel;
private JButton ButtonCreate;
private JButton ButtonLeft;
private JButton ButtonUp;
private JButton ButtonDown;
private JButton ButtonRight;
protected DrawningBoat _boat;
private JPanel PictureBox;
private JToolBar StatusStrip;
private JButton ButtonModif;
private JButton ButtonSelectBoat;
private final JLabel JLabelSpeed = new JLabel();
private final JLabel JLabelWeight = new JLabel();
private final JLabel JLabelColor = new JLabel();
private DrawningBoat SelectedBoat;
public DrawningBoat GetSelectedBoat() {
return SelectedBoat;
}
public void Draw() {
PictureBox.removeAll();
BufferedImage bmp = new BufferedImage(PictureBox.getWidth(), PictureBox.getHeight(),BufferedImage.TYPE_INT_RGB);
Graphics gr = bmp.getGraphics();
gr.setColor(new Color(238, 238, 238));
gr.fillRect(0, 0, PictureBox.getWidth(), PictureBox.getHeight());
if (_boat != null) {
_boat.DrawTransport(gr);
JLabel imageOfBoat = new JLabel();
imageOfBoat.setPreferredSize(PictureBox.getSize());
imageOfBoat.setMinimumSize(new Dimension(1, 1));
imageOfBoat.setIcon(new ImageIcon(bmp));
PictureBox.add(imageOfBoat,BorderLayout.CENTER);
}
validate();
}
private void SetData(){
Random random = new Random();
_boat.SetPosition(random.nextInt(10, 100), random.nextInt(30, 100), PictureBox.getWidth(), PictureBox.getHeight());
JLabelSpeed.setText("орость: " + _boat.GetBoat().GetSpeed() + " ");
JLabelWeight.setText("Вес: " + _boat.GetBoat().GetWeight() + " ");
JLabelColor.setText(("Цвет: " + _boat.GetBoat().GetBodyColor() + " "));
}
public FormBoat() {
add(Mainpanel);
Box LabelBox = Box.createHorizontalBox();
LabelBox.setMinimumSize(new Dimension(1, 20));
LabelBox.add(JLabelSpeed);
LabelBox.add(JLabelWeight);
LabelBox.add(JLabelColor);
StatusStrip.add(LabelBox);
try {
Image img = ImageIO.read(FormBoat.class.getResource("/Resource/up.jpg"));
ButtonUp.setIcon(new ImageIcon(img));
img = ImageIO.read(FormBoat.class.getResource("/Resource/down.jpg"));
ButtonDown.setIcon(new ImageIcon(img));
img = ImageIO.read(FormBoat.class.getResource("/Resource/left.jpg"));
ButtonLeft.setIcon(new ImageIcon(img));
img = ImageIO.read(FormBoat.class.getResource("/Resource/right.jpg"));
ButtonRight.setIcon(new ImageIcon(img));
} catch (Exception ex) {
System.out.println(ex);
}
ButtonCreate.addActionListener(e -> {
Random random = new Random();
Color color = JColorChooser.showDialog(null, "Цвет", null);
_boat = new DrawningBoat(random.nextInt(100, 300),random.nextInt(1000, 2000),color);
SetData();
Draw();
});
ButtonModif.addActionListener(e -> {
Random random = new Random();
Color first = JColorChooser.showDialog(null, "Цвет", null);
Color second = JColorChooser.showDialog(null, "Цвет", null);
_boat = new DrawningCatamaran(random.nextInt(100, 300), random.nextInt(1000, 2000), first, second, random.nextBoolean(), random.nextBoolean());
SetData();
Draw();
});
PictureBox.addComponentListener(new ComponentAdapter() {
@Override
public void componentResized(ComponentEvent e) {
if(_boat == null || _boat.GetBoat() == null) return;
super.componentResized(e);
_boat.ChangeBorders(PictureBox.getWidth(), PictureBox.getHeight());
PictureBox.revalidate();
Draw();
}
});
ButtonUp.addActionListener(e -> {
_boat.MoveTransport(Direction.Up);
PictureBox.revalidate();
Draw();
});
ButtonDown.addActionListener(e -> {
_boat.MoveTransport(Direction.Down);
PictureBox.revalidate();
Draw();
});
ButtonRight.addActionListener(e -> {
_boat.MoveTransport(Direction.Right);
PictureBox.revalidate();
Draw();
});
ButtonLeft.addActionListener(e -> {
_boat.MoveTransport(Direction.Left);
PictureBox.revalidate();
Draw();
});
ButtonSelectBoat.addActionListener(e -> {
SelectedBoat = _boat;
setVisible(false);
dispose();
});
}
}