java - 有没有办法在拖放中达到下降时刻?

标签 java swing drag-and-drop applet

我正在制作一个 Java 小程序,它通过拖放将文件从网站传输到我的桌面。我工作了,但是,有没有什么方法可以了解何时开始放置?我正在使用 MouseListener 来列出鼠标行为并使用我的传输处理程序传输数据的类。

下面的代码是这样的..

public class DragApplet extends JApplet
{       
    public void init()
    {       
        Container contentPane = getContentPane();

        Image image = ...;
        JLabel label = new JLabel(new ImageIcon(image));
        label.setTransferHandler(new ImageSelection());

        MouseListener listener = new MouseAdapter() 
        {
            public void mousePressed(MouseEvent me) {

                    JComponent comp = (JComponent) me.getSource();
                    TransferHandler handler = comp.getTransferHandler();
                    handler.exportAsDrag(comp, me, TransferHandler.COPY);
            }
        }       
        label.addMouseListener(listener);
        contentPane.add(label,BorderLayout.CENTER);
    }
}

class ImageSelection extends TransferHandler implements Transferable 
{
    private static final DataFlavor flavors[] = { DataFlavor.javaFileListFlavor };

    public ImageSelection(){ // bla bla.. }

    public int getSourceActions(JComponent c) {
        // bla bla..
        return TransferHandler.COPY;
    }     

    public Transferable createTransferable(JComponent comp) {
        // bla bla..
        return this;
    }

    public DataFlavor[] getTransferDataFlavors() {
        // bla bla..      
        return flavors;
    }

    public boolean canImport(JComponent comp, DataFlavor flavor[]) {
        // bla bla..
        return true;
    }    

    public Object getTransferData(DataFlavor flavor){   
        //Download starts and save "C:\\Temp\\aa.mpg" here..
        String[] ary= {"C:\\Temp\\aa.mpg\\"};           
        return Arrays.asList(ary);              
    }     

    public boolean importData(JComponent comp, Transferable t) {
        // bla bla..
        return false;
    }    

    public boolean isDataFlavorSupported(DataFlavor flavor) {
        // bla bla..
        return true;
    }
}

最佳答案

我不知道你是如何创建你的 Transferable 的,因为它不包含在问题中。在拖放过程中,Transferable 会在您开始拖动时立即创建。但是,无需在 Transferable 的构造函数中开始下载。

Transferable#getTransferData 方法为特定的 DataFlavor 调用时,您可以开始下载,也就是说,除非 DropTarget 实现不当,仅在发生下降时调用。

关于java - 有没有办法在拖放中达到下降时刻?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9128696/

相关文章:

Java 在忽略括号之间的任何定界符的同时拆分字符串

在事件监听器中启用 Java 菜单项

java - Apache poi : saving jtable to a file

java - 如何从我的 Android 设备中发现 UUID?

java - 无法在 Retrofit 2 中获取 json 对象和数组

Javamail 正文与附件一起时不显示

java - JTextField super.paintComponent() 在 Linux 上忽略背景颜色

android - 在线性布局中拖放图像

windows - 将任何东西拖到桌面上

javascript - 通过拖动将图像添加到动态表