Ух ты, спасибо большое, теперь все хорошо.
аюсь добавить mouseListener к каждому Jlabel, который я создаю, а затем передать их в 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;
}
Как видите, количество плиток никогда не бывает одинаковым, поэтому я не могу создать их вручную; У меня есть петля для этого.
Я рисую их так:
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();
}
И это работает, проблема в том, что мои mouseListeners, кажется, не работают вообще. Я попробовал отладку и никогда не добирался до метода mouseClick.
Любой вклад или руководство будет оценено.