在执行方法之前等待拖放手势

时间:2016-01-27 15:13:37

标签: java drag-and-drop awt

我有一个名为<div class="red"> <img class="hand" alt="HELLO"> </div>的类,其目的是将PDF文件拖放(DnD)到GUI,一旦完成,它将显示已删除文件的路径。让我们称之为第1步,目前工作得很好!然后,我想将此文件路径保存为我想要使用的字符串变量FileDragDemo,并将其传递给另一个类StringFile

第2步是运行类PdfEasyManager(在上一步完全完成之后)并传递PdfEasyManager变量。这就是我在努力的地方 - 我创建了一个名为StringFile的方法,我希望在完成所有步骤1之后执行该方法(存储DnD和String变量);换句话说,我希望方法CallClass成为CallClass类中的最后一步。当我将FileDragDemo作为main方法中的最后一项时,程序在DnD手势之前执行它...换句话说,程序在调用CallClass之前不会等待用户对文件进行DnD。我也尝试更改PdfEasyManager的位置但我得到了不同的错误。对不起代码中的所有评论,因为我尝试了不同的东西..

以下是Filedragdemo的代码:

CallClass

以下是PdfEasyManager的代码:

import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.swing.*;

@SuppressWarnings("serial")
public class FileDragDemo extends JPanel {


public static String StringFile; 
public JList list = new JList();



public FileDragDemo() {
  list.setDragEnabled(true);
  list.setTransferHandler(new FileListTransferHandler(list));

  add(new JScrollPane(list));

}

public static void createAndShowGui() {
  FileDragDemo mainPanel = new FileDragDemo();

  JFrame frame = new JFrame("FileDragDemo");
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  frame.getContentPane().add(mainPanel);
  frame.pack();
  frame.setLocationByPlatform(true);
  frame.setVisible(true);


}

public static void CallClass() throws Exception {

   PdfEasyManager PdfEasyManagerObject = new PdfEasyManager ();

      try {

          PdfEasyManagerObject.main(null);

        } catch (IOException e) {
             //TODO Auto-generated catch block
            e.printStackTrace();
        }
}

public static void main(String[] args) throws Exception {


  SwingUtilities.invokeLater(new Runnable() {
     public void run() {
        createAndShowGui();

     }

  }); 
callClass();
}

}

@SuppressWarnings("serial")
class FileListTransferHandler extends TransferHandler {
public JList list;


public static String StringFile;


public FileListTransferHandler(JList list) {
  this.list = list;
}

public int getSourceActions(JComponent c) {
  return COPY_OR_MOVE;
}

public boolean canImport(TransferSupport ts) {
  return ts.isDataFlavorSupported(DataFlavor.javaFileListFlavor);
}

public boolean importData(TransferSupport ts){
  try {
     @SuppressWarnings("rawtypes")

     List data = (List) ts.getTransferable().getTransferData(
           DataFlavor.javaFileListFlavor);
     if (data.size() < 1) {
        return false;
     }// close if

     DefaultListModel listModel = new DefaultListModel();

     for (Object item : data) {

          File file = (File) item;
         //file1 = item;
        listModel.addElement(file);
        System.out.println ("%%%%%%%%%%%file... " + file);
        StringFile = file.toString();
        System.out.println ("%%%%%%%%%%%string... " + StringFile);          
     } // close for
     //String filestring = file.toString();

     list.setModel(listModel);
     return true;


  }// close try  
  catch (UnsupportedFlavorException e) {
     return false;
  } catch (IOException e) {
     return false;
  } 

}
}

0 个答案:

没有答案