Comment dessiner une grille à l'aide de swing classe Java et de détecter la position de la souris lors d'un clic et faites-la glisser

Je suis en train de créer une grille de l'INTERFACE utilisateur (5*5) à l'aide de Swing classes. J'ai essayé avec une boucle imbriquée et l'ajout d'un composite de façon dynamique à la jFrame. Et j'ai aussi essayé de changer la couleur de fond de chaque composite lorsque l'utilisateur clique et tombe sur elle.
Mais avec mon code il y a un fossé énorme entre chaque cellule et je ne peux pas obtenir de l'événement glisser au travail.

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

Alors maintenant, je suis en train de créer un panneau et dessiner des grilles sur elle, puis détecte la position de la souris sur la grille, en plus de changer la couleur de chaque cellule.

Quelqu'un pourrait me donner quelques conseils sur la façon de mettre en œuvre cette grille sur un Composite, et changer la couleur d'un cellulaire.