我正在制作一个 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/