Java:大量的MouseListener与像素/网格划分相比如何?

时间:2011-12-17 08:56:47

标签: java performance swing jlabel mouselistener

例如,假设您有一个项目列表或一个大型组件网格,并且您希望实现某种悬停/翻转机制。执行此操作的简单方法是将MouseListener添加到每个组件,并使用mouseEnteredmouseExited方法。另一种方法是根据鼠标的位置确定组件,例如,您有一个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];
}

是否值得使用像素/网格计算,或者听众通常是否足够有效处理许多组件?

1 个答案:

答案 0 :(得分:4)

可以将相同的侦听器添加到多个组件中,并使用事件的getSource()getComponent()方法提供触发事件的组件。无需根据点位置进行猜测。

相关问题