2016-11-21 57 views
-1
p1label.setIcon(p1icon); 
    p2label.setIcon(p2icon); 
    p3label.setIcon(p3icon); 
    p4label.setIcon(p4icon); 

    p1label.setTransferHandler(new TransferHandler("p1")); 
    p2label.setTransferHandler(new TransferHandler("p2")); 
    p3label.setTransferHandler(new TransferHandler("p3")); 
    p4label.setTransferHandler(new TransferHandler("p4")); 

    MouseMotionListener mouseAction = new MouseMotionAdapter() { 

     @Override 
     public void mouseDragged(MouseEvent e) { 
      JComponent label = (JComponent) e.getSource(); 
      TransferHandler th = label.getTransferHandler(); 
      th.exportAsDrag(label,e,TransferHandler.COPY); 
     } 
    }; 

    p1label.addMouseMotionListener(mouseAction); 
    p2label.addMouseMotionListener(mouseAction); 
    p3label.addMouseMotionListener(mouseAction); 
    p4label.addMouseMotionListener(mouseAction); 

這裏是我的代碼,添加一個mouseMotionListener到JLabel。我希望玩家拖動其中一個圖標並將其移動到其他任何地方。然而,沒有一個圖像移動了一下,沒有發生任何事情(也沒有錯誤信息)。如何添加拖放到包含圖像的JLabel?

我還是Java GUI的新手。請幫忙。

回答

0
p1label.setIcon(p1icon); 
    p2label.setIcon(p2icon); 
    p3label.setIcon(p3icon); 
    p4label.setIcon(p4icon); 

    MouseMotionListener mouseAction = new MouseMotionAdapter() { 

     @Override 
     public void mouseDragged(MouseEvent e) { 
      JComponent label = (JComponent) e.getSource(); 
      label.setLocation(label.getLocation().x + e.getX(), label.getLocation().y + e.getY()); 
     } 
    }; 

    p1label.addMouseMotionListener(mouseAction); 
    p2label.addMouseMotionListener(mouseAction); 
    p3label.addMouseMotionListener(mouseAction); 
    p4label.addMouseMotionListener(mouseAction); 

我將拖動的方法更改爲setLocation而不是使用TransferHandler。它很棒!希望這個例子能幫助你們中的一些人。