Скажем, например, у вас есть список элементов или большая сетка компонентов, и вы хотите реализовать какой-то механизм наведения/ролловера. Самый простой способ сделать это — просто добавить MouseListener к каждому компоненту и использовать методы mouseEntered
и mouseExited
. Другой способ сделать это — определить компонент на основе местоположения мыши, например, у вас есть 2D-массив JLabels, и вы определяете, какая метка находится под указателем, используя что-то вроде:;
private void setRolloverIndices(Point p){
this.rolloverRow = p.y / this.labelHeight;
this.rolloverCol = p.x / this.labelWidth;
}
private JLabel getRolloverLabel(){
// assume safe values
return labels[rolloverRow][rolloverCol];
}
Стоит ли заморачиваться с вычислением пикселей/сетки, или слушатели вообще достаточно эффективны, чтобы обрабатывать множество компонентов?