2017-09-11 20 views
0

작은 문제인 것처럼 보입니다. MouseListener를 Line2D 객체에 추가하려고 시도했지만 작동하지 않습니다. 시도한 방법이 잘못되었거나 다른 방법으로 할 수 있습니다. 내가 여기서 잘못하고있는 것을 알아낼 수있게 도와주세요.그래픽 객체에 MouseListener 추가

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) { 
      } 

     }); 

     } 
} 

답변

1

MouseListener를 LinesPanel에 추가하십시오. 그리고 MouseEvent 좌표를 사용하여 클릭이 줄 가까이 있는지 확인합니다.

이 라인 구성 요소는 그래서의 MouseListener가 제대로 작동하지 않습니다 클릭 할 수있는 영역이없는 How to select a line

0

를 참조하십시오, 당신이 수행 할 수 있습니다하면 마우스를 처리하는 동안 눈에 보이지 않는 사각/직사각형/다각형을 추가입니다 대신.