Java中 Graphics绘制出来的组件如何添加点击事件

如题。貌似直接添加addMouseListener不行,有没有其他办法的?... 如题。貌似直接添加addMouseListener不行, 有没有其他办法的? 展开
 我来答
wujiang624
推荐于2017-09-09 · TA获得超过142个赞
知道答主
回答量:131
采纳率:0%
帮助的人:133万
展开全部
一个例子:

第一步自己的panel内部 Ellipse

 class MyDrawPanel extends JComponent implements MouseListener {
       Ellipse2D oval = new Ellipse2D.Double(70, 70, 100, 100);

       ....

 }
 第二步 在paintComponent 使用fill(Shape) 绘图
  public void paintComponent(Graphics g) {
      ....
      Graphics2D g2d = (Graphics2D) g;
      ....
      g2d.fill(oval);

  }
  
 第三步 鼠标事件
 public void mouseClicked(MouseEvent e) {
   if ((e.getButton() == 1) && oval.contains(e.getX(), e.getY()) ) {
      repaint();
    // JOptionPane.showMessageDialog(null,e.getX()+ "\n" + e.getY());
   }
 }
更多追问追答
追问
有办法能给每一个组件一个标识号么,点击的时候得到这个标志号
追答

刚才的自己的panel写一个构造方法里需要一个 id 属性,你每次new的时候给它一个id。你只要点击时候输出它就可以了


大概这样

void mypanel(int id){
    this.id = id;
}

public void mouseCliked(event){
    if(clicked)
        showMessage("id is: " + id);
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式