例如,假设您有一个项目列表或一个大型组件网格,并且您希望实现某种悬停/翻转机制。执行此操作的简单方法是将MouseListener添加到每个组件,并使用mouseEntered
和mouseExited
方法。另一种方法是根据鼠标的位置确定组件,例如,您有一个JLabel的2D数组,并通过使用以下内容确定指针下面的标签:
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];
}
是否值得使用像素/网格计算,或者听众通常是否足够有效处理许多组件?