Как нарисовать сетку, используя класс свинга Java и определить положение мыши при нажатии и перетаскивании

Я пытаюсь создать пользовательский интерфейс сетки (5 * 5), используя классы Swing. Я попробовал вложенный цикл и динамически добавил jPanel в jFrame. И я также попытался изменить цвет фона каждой jPanel, когда пользователь щелкает и перетаскивает ее. Но с моим кодом огромные промежутки между каждой ячейкой, и я могуполучить событие перетаскивания для работы.

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

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

Поэтому сейчас я пытаюсь создать одну панель и нарисовать на ней сетку, затем определяю положение мыши на сетке, дополнительно меняю цвет каждой ячейки.

Может кто-нибудь дать мне несколько советов о том, как реализовать эту сетку на JPanel, и изменить цвет выбранной ячейки.

Ответы на вопрос(2)

Ваш ответ на вопрос