Java 有没有办法在拖放中达到下降力矩?
我正在制作一个java小程序,通过拖放将文件从网站传输到我的桌面。我可以工作,但是,有没有办法知道何时开始拖放?我正在使用MouseListener来列出鼠标动作,并使用我的transferhandler类来传输数据 下面的代码如下Java 有没有办法在拖放中达到下降力矩?,java,swing,drag-and-drop,applet,Java,Swing,Drag And Drop,Applet,我正在制作一个java小程序,通过拖放将文件从网站传输到我的桌面。我可以工作,但是,有没有办法知道何时开始拖放?我正在使用MouseListener来列出鼠标动作,并使用我的transferhandler类来传输数据 下面的代码如下 public class DragApplet extends JApplet { public void init() { Container contentPane = getContentPane()
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;
}
}
我不知道你是如何创建你的
可转让的
,因为它不包括在问题中。在拖放过程中,可转移
将在您开始拖动时立即创建。但是,无需在可转移的
的构造函数中开始下载
当为特定的
DataFlavor
调用Transferable#getTransferData
方法时,您可以开始下载,也就是说,除非DropTarget
的实现不好,只有在删除发生时才调用。您要实现什么功能?我在TransferHandler类上实现了Transferable。Mouse listener创建了一些方法,如mousepressed、MouseRelease..应该是“您要实现什么功能?”,但您的评论完全没有告诉我。这样想吧。这是您用来说服潜在最终用户选择您的应用程序的功能。一个接一个。向我解释这项功能,就像向最终用户解释一样——注意,如果你对最终用户说了你刚刚写给我的内容,他们不会知道你在说什么。那么,功能是什么呢?我的小程序允许从网站拖放到最终用户的拖放目标(在文件夹或桌面中)。当最终用户在小程序上按下鼠标时,下载立即开始。我想在下载开始时开始下载,而不是第一次单击鼠标。好的,谢谢。可以总结为“在删除操作之前不会浪费任何下载”?这足以让我理解这个问题。我不太相信你的描述。为什么JRE会在资源被放到某个地方之前开始下载它?也许更熟悉D'n'D的人可以支持你的观察。(老实说,现在我明白了这个问题,它让我确信我没有足够的经验来帮助你。我希望一些D'n'D大师能路过并对你的问题感兴趣。)我已经编辑了我的问题并展示了我的代码。如果你不忙,请看代码并帮助我解决问题。谢谢你的帮助。