Нарисовать линию на игровом поле - Java

Узнай цену своей работы

Формулировка задачи:

Задание: нарисовать на игровом поле линию(потом переделаю на то что нужно) при клике Проблема: поле рисую на ура, а вот линия при клике не рисуется...
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.*;
 
public class Game extends JFrame{
    public static final int n=10;
    public static void main() {
        JFrame frame=new JFrame("Test");
        frame.setSize(305,330);
        frame.setVisible(true);
        frame.setResizable(false);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
        JPanel contentPane = new JPanel(){//это рисует
            Graphics2D g2;
 
            protected void paintComponent(Graphics g){
                super.paintComponent(g);
                g2=(Graphics2D)g;
 
                for (int i=0;i<frame.getWidth();i=i+(frame.getWidth()-5)/n)
                {
                    g2.setColor(Color.BLACK);
                    g2.drawLine(i,0, i, frame.getHeight());
                }
                for (int i=0;i<frame.getHeight();i=i+(frame.getHeight()-30)/n)
                {
                    g2.setColor(Color.BLACK);
                    g2.drawLine(0,i, frame.getWidth(),i);
                }
            }
        };
        frame.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                super.mouseClicked(e);
                System.out.print(e.getX() / 30);
                System.out.println((e.getY() / 30) - 1);
                JPanel X = new JPanel(){//а вот это нет
                    Graphics2D g2;
 
                    protected void paintComponent(Graphics g){
                        super.paintComponent(g);
                        g2=(Graphics2D)g;
                            g2.setColor(Color.RED);
                            g2.drawLine(100,100,200,200);
                    }
                };
                contentPane.add(X);
            }
        });
        frame.setContentPane(contentPane);
    }
}

Решение задачи: «Нарисовать линию на игровом поле»

textual
Листинг программы
JPanel contentPane = new JPanel(){
            Graphics2D g2;
            @Override
            protected void paintComponent(Graphics g){
                super.paintComponent(g);
                g2=(Graphics2D)g;
 
                for (int i=0;i<frame.getWidth();i=i+(frame.getWidth()-5)/n)
                {
                    g2.setColor(Color.BLACK);
                    g2.drawLine(i,0, i, frame.getHeight());
                }
                for (int i=0;i<frame.getHeight();i=i+(frame.getHeight()-30)/n)
                {
                    g2.setColor(Color.BLACK);
                    g2.drawLine(0,i, frame.getWidth(),i);
                }
                addMouseListener(new MouseAdapter() {
                    @Override
                    public void mouseClicked(MouseEvent e) {
                        super.mouseClicked(e);
                        lines.add(new Line2D.Float(100, 100, 200, 200));
                        for (int i = 0; i < lines.size(); i++) {
                            g2.setColor(Color.red);
                            g2.draw(lines.get(i));
                        }
                        repaint();
                    }
                });
            }
        };

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4 из 5