简体   繁体   English

将MouseListener添加到Graphics对象

[英]Adding MouseListener to Graphics Object

I'm struck in a what it seems to be a minor problem. 我对似乎是一个小问题感到震惊。 I tried to add MouseListener to Line2D object but it's not working. 我试图将MouseListener添加到Line2D对象,但无法正常工作。 Is the method or tried is invalid or I can do it another way. 该方法或尝试过的方法无效还是我可以用另一种方法来做。 Help me figure out what I'm doing wrong here. 帮我弄清楚我在做什么错。

public class DrawingLines {
    public static void main(String[] args){
        LineFrame lf = new LineFrame();
        lf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        lf.setVisible(true);

    }   
}

class LineFrame extends JFrame{
    public LineFrame(){
        setTitle("Line test");
        setSize(500, 500);

       LinesPanel lp = new LinesPanel();
        Container contentpane = getContentPane();
        contentpane.add(lp);

    }
}

class LinesPanel extends JPanel{
    public LinesPanel(){

    }
    public void paintComponent(Graphics g){
      super.paintComponent(g);
      Graphics2D g2 = (Graphics2D)g;
       Line2D line = new Line2D.Double(105.5, 306.6, 350.8, 4.9);
       g2.draw(line);
       line.addMouseListener(new MouseListener(){
          @Override
          public void mouseClicked(MouseEvent e) {
              System.out.println("Line Clicked !");
          }

          @Override
          public void mousePressed(MouseEvent e) {
          }

          @Override
          public void mouseReleased(MouseEvent e) {
          }

          @Override
          public void mouseEntered(MouseEvent e) {
          }

          @Override
          public void mouseExited(MouseEvent e) {
          }

       });

        }
}

Add the MouseListener to the LinesPanel. 将MouseListener添加到LinesPanel。 And use the MouseEvent coordinates to check whether the click is close to the line. 并使用MouseEvent坐标检查单击是否靠近直线。

See How to select a line 请参阅如何选择线

Line组件没有可单击区域,因此鼠标监听器无法正常工作,您可能想要做的是在其上添加一个不可见的正方形/矩形/多边形来代替鼠标。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM