Java: Каково большое количество MouseListeners по сравнению с делением пикселей / сетки? - PullRequest
1 голос
/ 17 декабря 2011

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

Стоит ли беспокоиться о расчете пикселей / сетки, или слушатели в целом достаточно эффективны для обработки многих компонентов?

1 Ответ

4 голосов
/ 17 декабря 2011

Один и тот же прослушиватель может быть добавлен к нескольким компонентам, и компонент, инициирующий событие, доступен с использованием метода getSource() или getComponent().Не нужно угадывать, исходя из местоположения точки.

...