PIbd-23_Polevoy_S.V._SelfPr.../FormArtillery.java

112 lines
4.6 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 javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Random;
public class FormArtillery extends JDialog {
private JPanel artilleryPane;
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 DrawingArtillery _artillery;
private DrawingArtillery selectedArtillery;
public FormArtillery() {
this.setTitle("Artillery");
this.setContentPane(artilleryPane);
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));
}
_artillery = new DrawingArtillery(rnd.nextInt(100, 300), rnd.nextInt(1000, 2000), color, rnd.nextInt(4, 7));
_artillery.setPosition(10 + rnd.nextInt(90), 10 + rnd.nextInt(90), pictureBox.getWidth(), pictureBox.getHeight());
speedLabel.setText(String.format("Скорость: %s", _artillery.getArtillery().getSpeed()));
weightLabel.setText(String.format("Вес: %s", _artillery.getArtillery().getWeight()));
colorLabel.setText(String.format("Цвет: %x", _artillery.getArtillery().getBodyColor().getRGB()));
repaint();
});
pictureBox.addComponentListener(new ComponentAdapter() {
@Override
public void componentResized(ComponentEvent e) {
if (_artillery != null) _artillery.changeBorders(pictureBox.getWidth(), pictureBox.getHeight());
repaint();
}
});
buttonLeft.addActionListener(e -> {
if (_artillery != null) _artillery.moveTransport(Direction.Left);
repaint();
});
buttonRight.addActionListener(e -> {
if (_artillery != null) _artillery.moveTransport(Direction.Right);
repaint();
});
buttonUp.addActionListener(e -> {
if (_artillery != null) _artillery.moveTransport(Direction.Up);
repaint();
});
buttonDown.addActionListener(e -> {
if (_artillery != null) _artillery.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));
}
_artillery = new DrawingAdvancedArtillery(
rnd.nextInt(100, 300),
rnd.nextInt(1000, 2000),
color,
rnd.nextInt(4, 7),
dopColor,
rnd.nextBoolean(),
rnd.nextBoolean()
);
_artillery.setPosition(10 + rnd.nextInt(90), 10 + rnd.nextInt(90), pictureBox.getWidth(), pictureBox.getHeight());
speedLabel.setText(String.format("Скорость: %s", _artillery.getArtillery().getSpeed()));
weightLabel.setText(String.format("Вес: %s", _artillery.getArtillery().getWeight()));
colorLabel.setText(String.format("Цвет: %x", _artillery.getArtillery().getBodyColor().getRGB()));
repaint();
});
buttonSelect.addActionListener(e -> {
selectedArtillery = _artillery;
dispose();
});
}
public FormArtillery(DrawingArtillery artillery) {
this();
_artillery = artillery;
repaint();
}
public DrawingArtillery getSelectedArtillery() {
return selectedArtillery;
}
@Override
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2d = (Graphics2D) pictureBox.getGraphics();
if (_artillery != null) {
_artillery.drawTransport(g2d);
}
}
}