2016-11-21 5 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に追加するコードです。私は、プレイヤーにアイコンの1つをドラッグし、どこにでも移動させたい。しかし、イメージングされたものはどれも動きませんでしたが、何も起こりませんでした(エラーメッセージもありません)。イメージを含む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); 

私の代わりにするTransferHandlerを使用するのsetLocationにドラッグする方法を変更しました。それは素晴らしい作品です!この例があなたの一部に役立つことを願っています。

関連する問題