1

Тема: Намалювати лінію на ігровому полі

Завдання: намалювати на ігровому полі лінію(потім перероблю на те що потрібно) при кліку мишкою
Проблема: поле намалював на ура, а вот лінія не малюється

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);
    }
}

2

Re: Намалювати лінію на ігровому полі

Чому?

3

Re: Намалювати лінію на ігровому полі

FakiNyan написав:

Чому?

а просто не малюється і все, без помилок без нічого, просто не малюється

4

Re: Намалювати лінію на ігровому полі

спробуйте тако

g2.draw(new Line2D.Double(x1, y1, x2, y2));

5

Re: Намалювати лінію на ігровому полі

FakiNyan написав:

спробуйте тако

g2.draw(new Line2D.Double(x1, y1, x2, y2));

неа))
не малює

6

Re: Намалювати лінію на ігровому полі

виведіть щось в консоль перед малюванням самої лінії

7

Re: Намалювати лінію на ігровому полі

FakiNyan написав:

виведіть щось в консоль перед малюванням самої лінії

*SCRATCH* хммм не виводить в консоль нічо

8

Re: Намалювати лінію на ігровому полі

а ось це виводиться при натисненні на кнопку миші?

System.out.print(e.getX() / 30);
                System.out.println((e.getY() / 30) - 1);

9

Re: Намалювати лінію на ігровому полі

FakiNyan написав:

а ось це виводиться при натисненні на кнопку миші?

System.out.print(e.getX() / 30);
                System.out.println((e.getY() / 30) - 1);

так

10

Re: Намалювати лінію на ігровому полі

зробіть сигнатуру отого метода отакою

@Override 
    public void paintComponent(Graphics g) {

11

Re: Намалювати лінію на ігровому полі

FakiNyan написав:

зробіть сигнатуру отого метода отакою

@Override 
    public void paintComponent(Graphics g) {

нічого не змінюється...ех

12

Re: Намалювати лінію на ігровому полі

фігово, тоді чекайте на того, хто шарить в цьому, або гугліть подібну проблему
можете ще на стековерфлоу створити таку саму тему, там швидко відповідають

13

Re: Намалювати лінію на ігровому полі

FakiNyan написав:

фігово, тоді чекайте на того, хто шарить в цьому, або гугліть подібну проблему
можете ще на стековерфлоу створити таку саму тему, там швидко відповідають

та поки консольно зроблю все, з графікою пограюсь потім))
гарно дякую