У меня есть 5 JLabels
внутри JPanel
внутри JFrame
. Я добавляю JLabels
, используя цикл for, который перебирает массив цветов:
private JLabel target;
// This is the origin of the first label added.
Point origin = new Point(10, 20);
// This is the offset for computing the origin for the next label.
int offset = 200;
for (int i = 0; i < layerColors.length; i++) {
target = createColoredLabel(layerColors[i], origin, targetIcon);
layeredPane.add(target, new Integer(i));
origin.x += offset;
}
// Create and set up a colored label with icon image.
private JLabel createColoredLabel(Color color, Point origin, ImageIcon icon) {
JLabel label = new JLabel(icon);
label.setVerticalAlignment(JLabel.TOP);
label.setHorizontalAlignment(JLabel.CENTER);
label.setOpaque(true);
label.setBackground(color);
label.setBorder(BorderFactory.createLineBorder(Color.black));
label.setBounds(origin.x, origin.y, 175, 263);
label.addMouseListener(this);
return label;
}
Это создает 5 JLabels
, с тем же самым ImageIcon
, назначенным каждому, распределенному горизонтально через JPanel
. К каждому добавляется MouseListener
, но только последний добавляемый ярлык запускает событие.
@Override
public void mouseClicked(MouseEvent e) {
if (e.getSource().equals(target)) {
Toolkit.getDefaultToolkit().beep();
}
}
У меня есть вторичная проблема, связанная с меткой, содержащей ImageIcon
, тянущейся за моим курсором, которая останавливается при наведении мыши на любую из 5 меток. Я полагаю, что это проблема индексации слоев, но я не могу ее решить.
Любая помощь с этим очень ценится, спасибо!