从Jtree显示的文件拖放到本地应用程序,让基打开被拖动的文件
各位大哥那个 dropTarget 可不可以定义本地任意的应用程序.
麻烦各位大哥指引指引, 在此先谢了!
各位大哥那个 dropTarget 可不可以定义本地任意的应用程序.
麻烦各位大哥指引指引, 在此先谢了!
解决方案 »
- 有没有办法——获得当前类的引用?
- 初学者
- 老鸟们,请问初学JAVA应该看那些书?
- java实现zip压缩的问题
- 谁可以帮帮我!!!
- java.awt.geom.draw不兼容
- 又一段不可征程编译的CODE,请多指教!
- java swt 桌面应用程序 如何启动 Flex air 程序并传入参数,flex air 如何接受外部参数
- 请问如何设置JTabel的COLUMN(列名)的字体大小?望告知
- Microsoft SQL Server 2000 JDBC支持rs.first()吗?我新下载的JDBC驱动怎么不支持,请教!!
- 谁可以给我一个用applet写的类似用IE下载的时候弹出来的对话框,可以选择保存文件位置的代码
- 在jtexteara中输入公式比如(a/(b*c+d)-e)*f+g,如何让每对匹配的括号以不同显示,见帖内
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.dnd.DnDConstants;
import java.awt.dnd.DragGestureEvent;
import java.awt.dnd.DragGestureListener;
import java.awt.dnd.DragSource;
import java.awt.dnd.DragSourceDragEvent;
import java.awt.dnd.DragSourceDropEvent;
import java.awt.dnd.DragSourceEvent;
import java.awt.dnd.DragSourceListener;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.Iterator;import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.UIManager;public class JLabelDragSource implements DragGestureListener,
DragSourceListener {
public JLabelDragSource(JLabel label) {
this.label = label; // Use the default DragSource
DragSource dragSource = DragSource.getDefaultDragSource(); // Create a DragGestureRecognizer and
// register as the listener
dragSource.createDefaultDragGestureRecognizer(label,
DnDConstants.ACTION_COPY_OR_MOVE, this);
} // Implementation of DragGestureListener interface.
public void dragGestureRecognized(DragGestureEvent dge) {
if (DnDUtils.isDebugEnabled()) {
DnDUtils.debugPrintln("Initiating event is "
+ dge.getTriggerEvent());
DnDUtils.debugPrintln("Complete event set is:");
Iterator iter = dge.iterator();
while (iter.hasNext()) {
DnDUtils.debugPrintln("\t" + iter.next());
}
}
Transferable transferable = new JLabelTransferable(label);
dge.startDrag(null, transferable, this);
} // Implementation of DragSourceListener interface
public void dragEnter(DragSourceDragEvent dsde) {
DnDUtils.debugPrintln("Drag Source: dragEnter, drop action = "
+ DnDUtils.showActions(dsde.getDropAction()));
} public void dragOver(DragSourceDragEvent dsde) {
DnDUtils.debugPrintln("Drag Source: dragOver, drop action = "
+ DnDUtils.showActions(dsde.getDropAction()));
} public void dragExit(DragSourceEvent dse) {
DnDUtils.debugPrintln("Drag Source: dragExit");
} public void dropActionChanged(DragSourceDragEvent dsde) {
DnDUtils.debugPrintln("Drag Source: dropActionChanged, drop action = "
+ DnDUtils.showActions(dsde.getDropAction()));
} public void dragDropEnd(DragSourceDropEvent dsde) {
DnDUtils.debugPrintln("Drag Source: drop completed, drop action = "
+ DnDUtils.showActions(dsde.getDropAction()) + ", success: "
+ dsde.getDropSuccess());
} public static void main(String[] args) {
try {
UIManager
.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} catch (Exception evt) {
} JFrame f = new JFrame("Draggable JLabel");
JLabel label = new JLabel("Drag this text", JLabel.CENTER);
label.setFont(new Font("Serif", Font.BOLD, 32));
f.getContentPane().add(label);
f.pack();
f.setVisible(true); // Attach the drag source
@SuppressWarnings("unused")
JLabelDragSource dragSource = new JLabelDragSource(label);
} protected JLabel label; // The associated JLabel
}class DnDUtils2 {
public static String showActions(int action) {
String actions = "";
if ((action & (DnDConstants.ACTION_LINK | DnDConstants.ACTION_COPY_OR_MOVE)) == 0) {
return "None";
} if ((action & DnDConstants.ACTION_COPY) != 0) {
actions += "Copy ";
} if ((action & DnDConstants.ACTION_MOVE) != 0) {
actions += "Move ";
} if ((action & DnDConstants.ACTION_LINK) != 0) {
actions += "Link";
} return actions;
} public static boolean isDebugEnabled() {
return debugEnabled;
} public static void debugPrintln(String s) {
if (debugEnabled) {
System.out.println(s);
}
} private static boolean debugEnabled = (System
.getProperty("DnDExamples.debug") != null);
}class JLabelTransferable implements Transferable {
public JLabelTransferable(JLabel label) {
this.label = label;
} // Implementation of the Transferable interface
public DataFlavor[] getTransferDataFlavors() {
return flavors;
} public boolean isDataFlavorSupported(DataFlavor fl) {
for (int i = 0; i < flavors.length; i++) {
if (fl.equals(flavors[i])) {
return true;
}
} return false;
} public Object getTransferData(DataFlavor fl) {
if (!isDataFlavorSupported(fl)) {
return null;
} if (fl.equals(DataFlavor.stringFlavor)) {
// String - return the text as a String
return label.getText() + " (DataFlavor.stringFlavor)";
} else if (fl.equals(jLabelFlavor)) {
// The JLabel itself - just return the label.
return label;
} else {
// Plain text - return an InputStream
try {
String targetText = label.getText() + " (plain text flavor)";
int length = targetText.length();
ByteArrayOutputStream os = new ByteArrayOutputStream();
OutputStreamWriter w = new OutputStreamWriter(os);
w.write(targetText, 0, length);
w.flush();
byte[] bytes = os.toByteArray();
w.close();
return new ByteArrayInputStream(bytes);
} catch (IOException e) {
return null;
}
}
} // A flavor that transfers a copy of the JLabel
public static final DataFlavor jLabelFlavor = new DataFlavor(JLabel.class,
"Swing JLabel"); private JLabel label; // The label being transferred private static final DataFlavor[] flavors = new DataFlavor[] {
DataFlavor.stringFlavor,
new DataFlavor("text/plain; charset=ascii", "ASCII text"),
jLabelFlavor };
}