Wie zeichnet man ein Gitter mit der Swing-Klasse Java und erkennt die Mausposition beim Klicken und Ziehen

Ich versuche, eine Raster-Benutzeroberfläche (5 * 5) mit Swing-Klassen zu erstellen. Ich habe eine verschachtelte Schleife ausprobiert und dem jFrame dynamisch ein jPanel hinzugefügt. Und ich habe auch versucht, die Hintergrundfarbe jedes jPanels zu ändern, wenn der Benutzer darauf klickt und darüber fällt. Aber mit meinem Code gibt es große Lücken zwischen den einzelnen Zellen und ich kann das Drag-Ereignis nicht zum Laufen bringen.

public class clsCanvasPanel extends JPanel {
    private static final int intRows = 5;
    private static final int intCols = 5;
    private List<JPanel> jpllist = new ArrayList<JPanel>();

    public clsCanvasPanel() {                           
        /*
         * 
         * Add eventListener to individual JPanel within CanvasPanel
         *
         * 
         * TODO : 
         * 1) mousePressed --> update Temperature and HeatConstant of clsElement Class
         * 2) start a new thread and  
         * 3) call clsElement.run() method
         * 
         * 
         * Right Now : it updates the colours of the JPanel
         * */
          MouseListener mouseListener = new MouseAdapter() {
             @Override
             public void mousePressed(MouseEvent e) {
                JPanel panel = (JPanel) e.getSource();

                Component[] components = panel.getComponents();
                for (Component component : components) {
                   component.setVisible(!component.isVisible());
                   component.setBackground(new Color(255,255,0));
                }
                panel.revalidate();
                panel.repaint();
             }
          };

          //TODO : refactoring
          GridLayout gdlyPlates = new GridLayout();
          gdlyPlates.setColumns(intCols);
          gdlyPlates.setRows(intRows);
          gdlyPlates.setHgap(0);
          gdlyPlates.setVgap(0);
          setLayout(gdlyPlates);

          //TODO : refactoring
          for (int row = 0; row < intRows; row++) {
              for (int col = 0; col < intCols; col++) {
                 JPanel panel = new JPanel(new GridBagLayout());
                 panel.setOpaque(false);
                 JPanel jl = new JPanel();
                 jl.setVisible(true);
                 panel.add(jl);
                 panel.addMouseListener(mouseListener);
                 jpllist.add(panel);
                 add(panel);
              }
           }
    }
}

Jetzt versuche ich, ein Feld zu erstellen und Gitter darauf zu zeichnen. Dann erkenne ich die Mausposition auf dem Gitter und ändere die Farbe jeder Zelle weiter.

Könnte mir jemand Ratschläge geben, wie man dieses Raster auf JPanel implementiert und die Farbe einer ausgewählten Zelle ändert.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage