Обнаружение щелчков мыши JPanel внутри полигона - PullRequest
0 голосов
/ 08 июня 2019

Я создаю игру Hex и мне нужно обнаруживать щелчки, соответствующие определенному шестиугольнику внутри моей сетки, чтобы я мог изменить цвет этого многоугольника.Я думаю, что это должно произойти в моем классе, который расширяет JPanel.Код показывает, как я генерирую сетку.

Я пытался поэкспериментировать с MouseListener / MouseMotionListener, но не получил приличных результатов.

import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Polygon;
import java.awt.Toolkit;

import javax.swing.JButton;
import javax.swing.JPanel;

public class TestPanel extends JPanel{

    private Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
    private int x = (int)(screen.getWidth()) / 61;
    private int y = (int)(screen.getHeight()) / 41;
    private final int SIZE = 11;
    private int xShift = 0;
    private Polygon[][] grid = new Polygon[SIZE][SIZE];

    public void paintComponent(Graphics g)
    {
        super.paintComponent(g);

        for(int i = 1; i <= SIZE; i++)
        {
            int[] yPoly = {(2 * i) * y, (2 * i - 1) * y, (2 * i) * y, (2 * i + 1) * y, (2 * i + 2) * y, (2 * i + 1) * y};
            for(int j = 1; j <= SIZE; j++)
            {
                int[] xPoly = {(2 * j - 1) * x + xShift, (2 * j) * x + xShift, (2 * j + 1) * x + xShift, (2 * j + 1) * x + xShift, (2 * j) * x + xShift, (2 * j - 1) * x + xShift};
                grid[i - 1][j - 1] = new Polygon(xPoly, yPoly, xPoly.length);
                g.drawPolygon(grid[i - 1][j - 1]);
            }
            xShift += x;
        }


    }

}
...