如何创建java swing图形对象,它会响应鼠标点击?

时间:2011-11-23 17:18:41

标签: java swing

我需要在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();

1 个答案:

答案 0 :(得分:1)

我可能会使用JPanel作为构成画布的较大组件的子元素。 JPanel,因为它是JComponent的子类,允许您通过addMouseListener()添加鼠标侦听器,并覆盖其paintComponent()方法。

如果您想移动方块,只需重新定位JPanel。

(就此而言,如果它是一个正方形或矩形,你甚至不需要覆盖paintComponent,你可以通过适当调用setBorder和setBackground来完成这个。)


另一种方法是使用JPanel作为整个画布,覆盖paintComponent以绘制您喜欢的任何内容,在JPanel上绘制addMouseListener,然后手动确定鼠标侦听器事件是否出现在图形元素的几何中。