2017-03-25 48 views
1

我正嘗試在java中編寫一個應用程序,該應用程序通過將一條線從一個拖拽到另一個上來連接面板上的兩個jLabel。我可以在面板上的兩點之間創建線條,但我無法弄清楚如何讓面板識別,當我將鼠標放在標籤上時,我想要開始繪製線條,同樣,當我釋放在目標上的鼠標我想停止繪圖。通過在它們之間拖動一條線來連接兩個標籤

我通過重寫面板的的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。你首先要做的就是存儲行的起始點並不斷更新行的終點。 C。請參閱:http://stackoverflow.com/a/10210603/3992939 – c0der

相關問題