文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

java中swing的drag and drop源程序示例代码

2023-06-03 02:44

关注

这篇文章将为大家详细讲解有关java中swing的drag and drop源程序示例代码,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

java swing的drag and drop源程序 

import Java.awt.*;import java.io.*;import java.util.*;import java.awt.event.*;import java.awt.dnd.*;import java.awt.datatransfer.*;import javax.swing.*;import javax.swing.event.*;import javax.swing.tree.*;public class ListDemo extends JFrame  implements ListselectionListener{  private DroppableList list;  private JTextField fileName;  public ListDemo()  {  super("ListDemo");  //Create the list and put it in a scroll pane  list = new DroppableList();  DefaultListModel listModel = (DefaultListModel)list.getModel();  list.setCellRenderer(new CustomCellRenderer());  list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);  list.setSelectedIndex(0);  list.addListSelectionListener(this);  JScrollPane listScrollPane = new JScrollPane(list);  String dirName = new String("");  String filelist[] = new File(dirName).list();  for (int i=0; i < filelist.length ; i++ )  {  String thisFileSt = dirName+filelist[i];  File thisFile = new File(thisFileSt);  if (thisFile.isDirectory())  continue;  try {  listModel.addElement(makeNode(thisFile.getName(),  thisFile.toURL().toString(),  thisFile.getAbsolutePath()));  } catch (java.NET.MalformedURLException e){  }  }  fileName = new JTextField(50);  String name = listModel.getElementAt(  list.getSelectedIndex()).toString();  fileName.setText(name);  file://Create a panel that uses FlowLayout (the default).  JPanel buttonPane = new JPanel();  buttonPane.add(fileName);  Container contentPane = getContentPane();  contentPane.add(listScrollPane, BorderLayout.CENTER);  contentPane.add(buttonPane, BorderLayout.NORTH);  }  public void valueChanged(ListSelectionEvent e)  {  if (e.getValueIsAdjusting() == false)  {  fileName.setText("");  if (list.getSelectedIndex() != -1)  {  String name = list.getSelectedValue().toString();  fileName.setText(name);  }  }  }  private static Hashtable makeNode(String name,  String url, String strPath)  {  Hashtable hashtable = new Hashtable();  hashtable.put("name", name);  hashtable.put("url", url);  hashtable.put("path", strPath);  return hashtable;  }  public class DroppableList extends JList  implements DropTargetListener, DragsourceListener, DragGestureListener  {  DropTarget dropTarget = new DropTarget (this, this);  DragSource dragSource = DragSource.getDefaultDragSource();  public DroppableList()  {  dragSource.createDefaultDragGestureRecognizer(  this, DnDConstants.ACTION_COPY_OR_MOVE, this);  setModel(new DefaultListModel());  }  public void dragDropEnd(DragSourceDropEvent DragSourceDropEvent){}  public void dragEnter(DragSourceDragEvent DragSourceDragEvent){}  public void dragExit(DragSourceEvent DragSourceEvent){}  public void dragOver(DragSourceDragEvent DragSourceDragEvent){}  public void dropActionChanged(DragSourceDragEvent DragSourceDragEvent){}  public void dragEnter (DropTargetDragEvent dropTargetDragEvent)  {  dropTargetDragEvent.acceptDrag (DnDConstants.ACTION_COPY_OR_MOVE);  }  public void dragExit (DropTargetEvent dropTargetEvent) {}  public void dragOver (DropTargetDragEvent dropTargetDragEvent) {}  public void dropActionChanged (DropTargetDragEvent dropTargetDragEvent){}  public synchronized void drop (DropTargetDropEvent dropTargetDropEvent)  {  try  {  Transferable tr = dropTargetDropEvent.getTransferable();  if (tr.isDataFlavorSupported (DataFlavor.javaFileListFlavor))  {  dropTargetDropEvent.acceptDrop (  DnDConstants.ACTION_COPY_OR_MOVE);  java.util.List fileList = (java.util.List)  tr.getTransferData(DataFlavor.javaFileListFlavor);  Iterator iterator = fileList.iterator();  while (iterator.hasNext())  {  File file = (File)iterator.next();  Hashtable hashtable = new Hashtable();  hashtable.put("name",file.getName());  hashtable.put("url",file.toURL().toString());  hashtable.put("path",file.getAbsolutePath());  ((DefaultListModel)getModel()).addElement(hashtable);  }  dropTargetDropEvent.getDropTargetContext().dropComplete(true);  } else {  System.err.println ("Rejected");  dropTargetDropEvent.rejectDrop();  }  } catch (IOException io) {  io.printStackTrace();  dropTargetDropEvent.rejectDrop();  } catch (UnsupportedFlavorException ufe) {  ufe.printStackTrace();  dropTargetDropEvent.rejectDrop();  }  }  public void dragGestureRecognized(DragGestureEvent dragGestureEvent)  {  if (getSelectedIndex() == -1)  return;  object obj = getSelectedValue();  if (obj == null) {  // Nothing selected, nothing to drag  System.out.println ("Nothing selected - beep");  getToolkit().beep();  } else {  Hashtable table = (Hashtable)obj;  FileSelection transferable =  new FileSelection(new File((String)table.get("path")));  dragGestureEvent.startDrag(  DragSource.DefaultCopyDrop,  transferable,  this);  }  }  }  public class CustomCellRenderer implements ListCellRenderer  {  DefaultListCellRenderer listCellRenderer =  new DefaultListCellRenderer();  public Component getListCellRendererComponent(  JList list, Object value, int index,  boolean selected, boolean hasFocus)  {  listCellRenderer.getListCellRendererComponent(  list, value, index, selected, hasFocus);  listCellRenderer.setText(getValueString(value));  return listCellRenderer;  }  private String getValueString(Object value)  {  String returnString = "null";  if (value != null) {  if (value instanceof Hashtable) {  Hashtable h = (Hashtable)value;  String name = (String)h.get("name");  String url = (String)h.get("url");  returnString = name + " ==> " + url;  } else {  returnString = "X: " + value.toString();  }  }  return returnString;  }  }  public class FileSelection extends Vector implements Transferable  {  final static int FILE = 0;  final static int STRING = 1;  final static int PLAIN = 2;  DataFlavor flavors[] = {DataFlavor.javaFileListFlavor,  DataFlavor.stringFlavor,  DataFlavor.plainTextFlavor};  public FileSelection(File file)  {  addElement(file);  }    public synchronized DataFlavor[] getTransferDataFlavors() {   return flavors;  }    public boolean isDataFlavorSupported(DataFlavor flavor) {  boolean b  = false;  b |=flavor.equals(flavors[FILE]);  b |= flavor.equals(flavors[STRING]);  b |= flavor.equals(flavors[PLAIN]);   return (b);  }    public synchronized Object getTransferData(DataFlavor flavor)   throws UnsupportedFlavorException, IOException {   if (flavor.equals(flavors[FILE])) {    return this;   } else if (flavor.equals(flavors[PLAIN])) {    return new StringReader(((File)elementAt(0)).getAbsolutePath());   } else if (flavor.equals(flavors[STRING])) {    return((File)elementAt(0)).getAbsolutePath();   } else {    throw new UnsupportedFlavorException(flavor);   }  }  }  public static void main(String s[])  {  JFrame frame = new ListDemo();  frame.addWindowListener(new WindowAdapter() {  public void windowClosing(WindowEvent e) {  System.exit(0);  }  });  frame.pack();  frame.setVisible(true);  }}

关于“java中swing的drag and drop源程序示例代码”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯