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
還不夠,在迭代它們時會減慢程序速度,但我很好奇是否有其他方式處理它。 –