我需要在 Canvas 的不同位置动态绘制图形元素(正方形),并且我需要监听鼠标点击以更改正方形的位置。 如何向 Graphics 对象添加鼠标监听器?我必须使用其他方法吗?
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();
最佳答案
我可能会使用 JPanel 作为形成 Canvas 的较大组件的子元素。 JPanel,因为它是 JComponent 的子类,允许您通过 addMouseListener()
添加鼠标监听器,并覆盖其 paintComponent
()方法。
如果您想移动方 block ,只需重新定位 JPanel 即可。
(就此而言,如果它是正方形或矩形,您甚至不需要重写 PaintComponent,您只需通过适当调用 setBorder 和 setBackground 即可完成此操作。)
<小时/>另一种方法是使用 JPanel 作为整个 Canvas ,重写 PaintComponent 来绘制您喜欢的任何内容,在 JPanel 上添加MouseListener,然后手动确定鼠标监听器事件是否发生在图形元素的几何形状内。
关于java - 如何创建响应鼠标点击的 java swing Graphic 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8246387/