我需要在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();
答案 0 :(得分:1)
我可能会使用JPanel作为构成画布的较大组件的子元素。 JPanel,因为它是JComponent的子类,允许您通过addMouseListener()
添加鼠标侦听器,并覆盖其paintComponent
()方法。
如果您想移动方块,只需重新定位JPanel。
(就此而言,如果它是一个正方形或矩形,你甚至不需要覆盖paintComponent,你可以通过适当调用setBorder和setBackground来完成这个。)
另一种方法是使用JPanel作为整个画布,覆盖paintComponent以绘制您喜欢的任何内容,在JPanel上绘制addMouseListener,然后手动确定鼠标侦听器事件是否出现在图形元素的几何中。