2017-03-25 4 views
1

패널에서 두 개의 jLabel을 서로 드래그하여 연결하는 java로 응용 프로그램을 작성하려고합니다. 패널에서 두 지점 사이에 선을 만들 수는 있지만 패널에서 레이블을 마우스로 누르고 있으면 선 그리기를 시작할 때 패널을 인식하는 방법을 이해할 수 없으며 선을 그리면 선이 그려집니다. 마우스를 목표에 그리기를 중지하고 싶습니다.두 레이블 사이에 선을 드래그하여 연결

나는 패널의의 paintComponent 메서드를 재정하여 선을 그릴 :

@Override 
public void paintComponent(Graphics g) { 

    Graphics2D g2d = (Graphics2D) g; 

    Enumeration e = stack.elements(); 

    g2d.setPaint(Color.black); 

    while (e.hasMoreElements()) { 
     g2d.draw((Line2D) e.nextElement()); 
    } 

    g2d.setPaint(blank); 
    g2d.draw(savedLine2d); 

    g2d.setPaint(Color.black); 
    g2d.draw(line2d); 

} 

답변

0

JLabel에 별이, 그 라벨에 모션 리스너를 등록하는 것이 드래그 감지하기 : 답장을

JLabel lable = new JLabel("Drag test"); 
    //add motion listener to label 
    lable.addMouseMotionListener(new MouseMotionListener() { 

     @Override 
     public void mouseMoved(MouseEvent e) { 
      // do nothing 

     } 

     @Override 
     public void mouseDragged(MouseEvent e) { 
      System.out.println("Dragging " + e.getX()+"-" + e.getY()); 
     } 
    }); 
+0

감사합니다. 나는 아직도 그것을 작동시킬 수 없다. MouseDrag 이벤트를 포함하는 패널이나 그와 비슷한 것으로 전달해야합니까? – nimbinensis

+0

a. 참조 : http://stackoverflow.com/help/someone-answers b. 먼저 할 일은 라인의 시작점을 저장하고 라인의 끝점을 계속 업데이트하는 것입니다. 기음. 참조 : http://stackoverflow.com/a/10210603/3992939 – c0der

관련 문제