Допустим, например, у вас есть список элементов или большая сетка компонентов, и вы хотите реализовать какой-то механизм наведения / опрокидывания. Самый простой способ сделать это - просто добавить MouseListener к каждому компоненту и использовать методы mouseEntered
и mouseExited
. Другой способ сделать это - определить компонент на основе расположения мыши, например, у вас есть двумерный массив 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];
}
Стоит ли беспокоиться о расчете пикселей / сетки, или слушатели в целом достаточно эффективны для обработки многих компонентов?