Adicionando um mouseListener a um componente desenhado com o método paintComponent

Estou tentando adicionar um mouseListener a cada Jlabel que crio e depois passá-los para o paintComponent.

  private List<JLabel> createTiles (){

    int x = 10;
    int y = 0;
    List<JLabel> tiles = new ArrayList<>();

    //Number of tiles painted
    for (Integer i : gameModelHandle.numbersToDigits()) {

        JLabel tile = new JLabel("" + i, JLabel.CENTER);
        tile.setSize(new Dimension(140, 140));
        tile.setFont(tile.getFont().deriveFont(45f));
        tile.setLocation(x, y);
        tile.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {

                GameModel.currentSum(i);
                changeColour();
            }

            @Override
            public void mouseReleased(MouseEvent e) {

                if (getBounds().intersects(tile.getBounds())){

                    int number = gameModelHandle.combineDigits(i, Integer.parseInt(tile.getText()));
                    GameModel.currentSum(number);
                }
            }
        });

        tiles.add(tile);
        x+=150;
    }
    return tiles;
}

Como você pode ver, o número de blocos nunca é o mesmo, motivo pelo qual não posso criá-los manualmente; Eu tenho um loop para isso.

Eu pinto-os assim:

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

    this.removeAll();

    for (JLabel i : createTiles()) {

        g.setColor(tileColours[activeColourIndex]);
        g.fillRoundRect(i.getX(), i.getY(), i.getWidth(), i.getHeight(), 20, 20);
        this.add(i);
    }

    revalidate();
}

E funciona, o problema é que meus mouseListeners parecem não funcionar. Tentei depurar e nunca cheguei ao método mouseClick.

Qualquer contribuição ou orientação seria apreciada.

questionAnswers(1)

yourAnswerToTheQuestion