有什么办法在拖放达到下降的时刻? [英] Is there any way to reach drop moment in Drag and Drop?

查看:93
本文介绍了有什么办法在拖放达到下降的时刻?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想提出一个Java小程序,从网站上传输文件到我的桌面使用拖放Drop.I的作品,但,有没有什么办法的时候开始落下?我使用的MouseListener为listining鼠标行为和使用的TransferHandler我学习类传输数据。

code下面这样的..

 公共类DragApplet扩展JApplet的
{
    公共无效的init()
    {
        集装箱的contentPane =的getContentPane();        形象画像= ...;
        JLabel的标签=新的JLabel(新ImageIcon的(图片));
        label.setTransferHandler(新ImageSelection());        MouseListener的听众=新MouseAdapter()
        {
            公共无效鼠标pressed(我的MouseEvent){                    JComponent的补偿=(JComponent中)me.getSource();
                    的TransferHandler处理器= comp.getTransferHandler();
                    handler.exportAsDrag(对比,我TransferHandler.COPY);
            }
        }
        label.addMouseListener(监听);
        contentPane.add(标签,BorderLayout.CENTER);
    }
}类ImageSelection扩展的TransferHandler实现转换
{
    私有静态最终DataFlavor的味道[] = {} DataFlavor.javaFileListFlavor;    公共ImageSelection(){//喇嘛喇嘛..}    公众诠释getSourceActions(JComponent c)在{
        //喇嘛喇嘛..
        返回TransferHandler.COPY;
    }    公共转换createTransferable(JComponent的COMP){
        //喇嘛喇嘛..
        返回此;
    }    公众的DataFlavor []而getTransferDataFlavors(){
        //喇嘛喇嘛..
        返回口味;
    }    公共布尔canImport(JComponent的补偿,风味的DataFlavor []){
        //喇嘛喇嘛..
        返回true;
    }    公共对象getTransferData(DataFlavor的味道){
        //开始下载并保存C:\\\\ \\\\温度aa.mpg在这里..
        的String [] =进制{C:\\\\ \\\\温度\\\\ aa.mpg};
        返回Arrays.asList(元);
    }    公共布尔IMPORTDATA(JComponent的补偿,可转让T){
        //喇嘛喇嘛..
        返回false;
    }    公共布尔isDataFlavorSupported方法(DataFlavor的味道){
        //喇嘛喇嘛..
        返回true;
    }
}


解决方案

我不知道你是怎么创建转换,因为它不包括在这一问题。在拖和下降过程中的转换作为你开始拖动尽快创建。但是,有没有必要开始下载在构造函数中的转换

您可以开始下载时,转换#getTransferData 方法被调用的具体的DataFlavor ,这一点,除非在的DropTarget 的不好实现的,只有当发生跌落调用。

I am making a java applet that transfer files from website to my desktop with Drag and Drop.I works but,Is there any way to learn when the dropping begins?I'm using MouseListener for listining mouse acts and using my transferhandler class for transfering data.

Code below like this..

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;
    }
}

解决方案

I do not know how you create your Transferable since it is not included in the question. In the drag-and-drop process the Transferable is created as soon as you start dragging. However, there is no need to start your download in the constructor of your Transferable.

You can start downloading when the Transferable#getTransferData method is called for the specific DataFlavor, which is, unless the DropTarget is badly implemented, only called when the drop has occurred.

这篇关于有什么办法在拖放达到下降的时刻?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆