2015-09-12 2 views
0

Поскольку свойство TransferHandler передает только свойство «текст» JLabel. Как мне это сделать, чтобы сделать файл изображения? Должен ли я сделать обычай TransferHandler?Использование файла изображения с Swing TransferHandler

+0

Что-то вроде [это] (http://stackoverflow.com/questions/11460704/dragging-a-jlabel-with- a-transferhandler-drag-and-drop) или [это] (http://stackoverflow.com/questions/11201734/java-how-to-drag-and-drop-jpanel-with-its-components/11443501#11443501) – MadProgrammer

ответ

2

Как я могу сделать это, чтобы сделать файл изображения?

Не уверен, что вы просто пытаетесь перенести значок или обои и текст одновременно.

Если вы просто хотите значок, вы можете использовать TransferHandler по умолчанию:

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class DragIcon extends JPanel 
{ 
    public DragIcon() 
    { 
     TransferHandler iconHandler = new TransferHandler("icon"); 
     MouseListener dragListener = new DragMouseAdapter(); 

     JLabel label1 = new JLabel("Label1"); 
     label1.setTransferHandler(iconHandler); 
     label1.addMouseListener(dragListener); 
     label1.setIcon(new ImageIcon("copy16.gif")); 

     JLabel label2 = new JLabel("Label2"); 
     label2.setTransferHandler(iconHandler); 
     label2.addMouseListener(dragListener); 

     add(label1); 
     add(label2); 
    } 

    private class DragMouseAdapter extends MouseAdapter 
    { 
     public void mousePressed(MouseEvent e) 
     { 
      JComponent c = (JComponent)e.getSource(); 
      TransferHandler handler = c.getTransferHandler(); 
      handler.exportAsDrag(c, e, TransferHandler.COPY); 
//   handler.exportAsDrag(c, e, TransferHandler.MOVE); 
     } 
    } 

    private static void createAndShowGUI() 
    { 
     JFrame frame = new JFrame("Drag Icon"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.add(new DragIcon()); 
     frame.setLocationByPlatform(true); 
     frame.setSize(200, 100); 
     frame.setVisible(true); 
    } 

    public static void main(String[] args) 
    { 
     EventQueue.invokeLater(new Runnable() 
     { 
      public void run() 
      { 
       createAndShowGUI(); 
      } 
     }); 
    } 
}