如何创建java swing图形对象来响应鼠标点击?
我需要在画布的不同位置动态绘制图形元素(正方形),我需要听鼠标的点击来改变正方形的位置。 如何将鼠标侦听器添加到图形对象?我必须使用另一种方法吗
int x = 0;
int y = 0;
Graphics g = getGraphics(); // get Graphics context
g.setColor(Color.red);
g.fillRect( x - 25, y - 15, 60, 30 );
g.setColor(Color.black);
g.drawRect( x - 25, y - 15, 60, 30 );
g.dispose();
# 1 楼答案
我可能会使用JPanel作为构成画布的更大组件的子元素。由于JPanel是JComponent的子类,因此它允许您通过^{} 添加鼠标侦听器,并重写其^{}() 方法
如果要移动正方形,只需重新定位JPanel即可
(就此而言,如果它是正方形或长方形,甚至不需要重写paintComponent,只需适当调用setBorder和SetbBackground即可完成。)
另一种方法是使用JPanel作为整个画布,覆盖paintComponent以绘制任何您喜欢的内容,在JPanel上添加MouseListener,然后手动确定鼠标侦听器事件是否发生在图形元素的几何体中