通过在它们之间拖动一条线来连接两个标签

时间:2017-03-25 03:02:56

标签: java

我试图在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);

}

1 个答案:

答案 0 :(得分: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());
        }
    });