0
我想知道是否有一种有效的方式来处理坐标范围内的鼠标点击,而不是一堆if语句。这导致我考虑使用监听器来处理它,但是甚至可以将监听器分配给任意对象?高效处理鼠标点击
我想知道是否有一种有效的方式来处理坐标范围内的鼠标点击,而不是一堆if语句。这导致我考虑使用监听器来处理它,但是甚至可以将监听器分配给任意对象?高效处理鼠标点击
如果您正在讨论如同JButton一样在JComponent上监听鼠标动作,则可以将MouseListener添加到JComponent。
如果您正在讨论由您创建的对象,该对象在面板中显示为图像,则可以将MouseListener添加到包含您的对象的面板。在每次单击鼠标时,遍历面板中的对象并检查对象是否包含鼠标光标。
class DisplayPanel extends JPanel{
//Your constructor and other members..
public DisplayPanel(){
addMouseListener(new MouseAdapter(){
public void mouseClicked (MouseEvent e){
for(MyObjects : obj)
if(obj.contains(e.getX(), e.getY()))
clickedObj = obj;
}
});
}
}
你的意思已经任意类扩展JComponent的?如果它已经扩展了另一个课程呢?
另一种方法是考虑制作一个定制的JComponent。但是,如果你的对象已经扩展到另一个类。您可以考虑构图的继承:
class ArbritaryComponent extends JComponent{
private ArbritaryObject obj;
}
class ArbritaryObject extends SomeClass{
private Image image;
}
然后将侦听器添加到您的自定义组件。 想要定制JComponent的一个简单的想法:Extending JComponent
我试图摆脱迭代如果可能的话,但是这是为了出现在JFrame上的图像,但是我创建的对象。 –
@JacobG。你有多少物品? – user3437460
还不够,在迭代它们时会减慢程序速度,但我很好奇是否有其他方式处理它。 –