- 浏览: 733000 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
lingsuch:
Android网络连接判断与处理 -
月光照着我:
写的不错,作为笔记了
Android中LayoutInflater的使用 -
智博王锋:
好文章是要顶的!
Android中LayoutInflater的使用 -
云南白药:
...
Android中LayoutInflater的使用 -
万新one:
理解了许多。解释的不错。3Q.
Android中LayoutInflater的使用
import java.awt.BorderLayout; import java.awt.Color; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; import java.awt.datatransfer.UnsupportedFlavorException; import java.awt.dnd.DnDConstants; import java.awt.dnd.DragGestureEvent; import java.awt.dnd.DragGestureListener; import java.awt.dnd.DragSource; import java.awt.dnd.DragSourceContext; import java.awt.dnd.DragSourceDragEvent; import java.awt.dnd.DragSourceDropEvent; import java.awt.dnd.DragSourceEvent; import java.awt.dnd.DragSourceListener; import java.awt.dnd.DropTarget; import java.awt.dnd.DropTargetDragEvent; import java.awt.dnd.DropTargetDropEvent; import java.awt.dnd.DropTargetEvent; import java.awt.dnd.DropTargetListener; import java.io.IOException; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTree; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.TreePath; public class DragAndDrop extends JFrame { private static final long serialVersionUID = 1L; JScrollPane jScrollPane1 = new JScrollPane(); JTextArea jTextArea1 = new JTextArea(); public DragAndDrop() { try { jbInit(); } catch (Exception exception) { exception.printStackTrace(); } jScrollPane1.getViewport().setBackground(new Color(105, 38, 125)); jTextArea1.setBackground(Color.orange); jTextArea1.setToolTipText("????"); JTree jtr = new JTree(); jtr.setBackground(Color.BLUE); jScrollPane1.getViewport().add(jtr); this.getContentPane().add(jTextArea1, BorderLayout.NORTH); this.getContentPane().add(jScrollPane1, BorderLayout.CENTER); DragSource dragSource = DragSource.getDefaultDragSource(); //创建拖拽源 dragSource.createDefaultDragGestureRecognizer(jtr, DnDConstants.ACTION_COPY_OR_MOVE, new DragAndDropDragGestureListener()); //建立拖拽源和事件的联系 new DropTarget(jTextArea1, new DragAndDropDropTargetListener()); } private void jbInit() throws Exception { } public static void main(String[] args) { DragAndDrop dad = new DragAndDrop(); dad.setTitle("拖拽演示"); dad.setSize(400, 300); dad.setVisible(true); } } class DragAndDropDragGestureListener implements DragGestureListener { public void dragGestureRecognized(DragGestureEvent dge) { //将数据存储到Transferable中,然后通知组件开始调用startDrag()初始化 JTree tree = (JTree) dge.getComponent(); TreePath path = tree.getSelectionPath(); if (path != null) { DefaultMutableTreeNode selection = (DefaultMutableTreeNode) path.getLastPathComponent(); DragAndDropTransferable dragAndDropTransferable = new DragAndDropTransferable(selection); dge.startDrag(DragSource.DefaultCopyDrop, dragAndDropTransferable, new DragAndDropDragSourceListener()); } } } class DragAndDropTransferable implements Transferable { private DefaultMutableTreeNode treeNode; DragAndDropTransferable(DefaultMutableTreeNode treeNode) { this.treeNode = treeNode; } static DataFlavor flavors[] = { DataFlavor.stringFlavor }; public DataFlavor[] getTransferDataFlavors() { return flavors; } public boolean isDataFlavorSupported(DataFlavor flavor) { if (treeNode.getChildCount() == 0) { return true; } return false; } public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException { return treeNode; } } class DragAndDropDragSourceListener implements DragSourceListener { public void dragDropEnd(DragSourceDropEvent dragSourceDropEvent) { if (dragSourceDropEvent.getDropSuccess()) { //拖拽动作结束的时候打印出移动节点的字符串 int dropAction = dragSourceDropEvent.getDropAction(); if (dropAction == DnDConstants.ACTION_MOVE) { System.out.println("MOVE: remove node"); } } } public void dragEnter(DragSourceDragEvent dragSourceDragEvent) { DragSourceContext context = dragSourceDragEvent.getDragSourceContext(); int dropAction = dragSourceDragEvent.getDropAction(); if ((dropAction & DnDConstants.ACTION_COPY) != 0) { context.setCursor(DragSource.DefaultCopyDrop); } else if ((dropAction & DnDConstants.ACTION_MOVE) != 0) { context.setCursor(DragSource.DefaultMoveDrop); } else { context.setCursor(DragSource.DefaultCopyNoDrop); } } public void dragExit(DragSourceEvent dragSourceEvent) { } public void dragOver(DragSourceDragEvent dragSourceDragEvent) { } public void dropActionChanged(DragSourceDragEvent dragSourceDragEvent) { } } class DragAndDropDropTargetListener implements DropTargetListener { public void dragEnter(DropTargetDragEvent dtde) { } public void dragOver(DropTargetDragEvent dtde) { } public void dropActionChanged(DropTargetDragEvent dtde) { } public void dragExit(DropTargetEvent dte) { } public void drop(DropTargetDropEvent dtde) { Transferable tr = dtde.getTransferable();//使用该函数从Transferable对象中获取有用的数据 String s = ""; try { if (tr.isDataFlavorSupported(DataFlavor.stringFlavor)) { s = tr.getTransferData(DataFlavor.stringFlavor).toString(); } } catch (Exception e) { } System.out.println(s); DropTarget c = (DropTarget) dtde.getSource(); JTextArea d = (JTextArea) c.getComponent(); if (s != null && s != "") { d.append(s + "\n"); } } }
发表评论
-
Swing中引入Android的NinePatch技术,让Swing拥有Android的外观定制能力
2012-09-21 09:22 1631【摘要】 本文诣在 ... -
JavaSwing实现支持合并拆分的JTable
2010-12-16 15:39 1980GridBagModel:抽象模型接口。该接口用于描述表格中单 ... -
JTable小例子,表格中使用JComboBox下拉按钮
2010-12-16 15:21 5429import java.awt.BorderLayout; ... -
配合滚动面板实现JTable上下翻页的效果
2010-12-16 14:26 3427import java.awt.BorderLayout; ... -
JScrollBar简单演示例子
2010-12-06 19:28 6628import java.awt.*; import java ... -
点击jtable的表头,数据会根据根据表头来排序
2010-12-06 11:47 5142import javax.swing.JFrame; imp ... -
重写JSplitPane的BasicSplitPaneUI
2010-09-18 13:39 1581import java.awt.Color; import ... -
Swing窗口初始最大化的方法
2010-08-20 11:09 79131.设置窗口最大(伪最大化) JFrame frame =n ... -
设置JTextPane指定内容的颜色
2010-05-21 14:29 1373package Assis; import java.a ... -
ScaleImageDemo图像缩小与放大演示
2010-05-12 14:59 2126package Assis; import java.a ... -
TreesDemo
2010-05-04 11:19 1094import java.awt.*; import java ... -
TableDemo
2010-05-04 11:17 1206import javax.swing.JTable; imp ... -
分割面板演示JSplitPaneDemo
2010-05-04 11:12 1400//Java Swing 带分隔条的面板代码 impor ... -
StylesExample8
2010-04-08 12:55 1212import javax.swing.*; import j ... -
StylesExample7
2010-04-08 12:54 1008import javax.swing.*; import j ... -
StylesExample6
2010-04-08 12:52 1072import javax.swing.*; import j ... -
StylesExample5
2010-04-08 12:51 1003import javax.swing.*; import j ... -
StylesExample4
2010-04-08 12:50 1120import javax.swing.*; import j ... -
StylesExample3
2010-04-08 12:50 1013import javax.swing.*; import j ... -
StylesExample2
2010-04-08 12:49 1063import javax.swing.*; import j ...
相关推荐
在这个特定的实现中,"drag-drop"功能被集成到树形菜单中,使得用户能够通过拖动节点来重新组织或移动数据,这极大地提升了用户体验和操作效率。 "drag drop java"是Java编程语言中的一个特性,Java提供了Swing和...
"drag-drop-folder-tree" 是一个专为实现这种功能而设计的组件,它不仅具备基本的树形展示,还提供了额外的交互功能,如节点的拖放操作和右键点击菜单。 动态树的核心特点在于其动态性,这意味着树中的节点可以根据...
实现节点拖拽功能需要结合Vue的响应式特性与HTML5的拖放API(Drag and Drop API)。首先,在`Tree`节点上设置`draggable`属性为`true`,然后注册`dragstart`、`dragenter`、`dragover`、`drop`和`dragend`等事件处理...
drag-drop-tree 是一个专门针对拖放功能的JavaScript库,允许用户通过拖拽操作来重新排列树的结构。这种库对于需要高度用户交互的应用非常有用,比如文件管理器或者任务管理器。拖放功能的实现涉及到HTML5的drag ...
在这个场景中,我们讨论的是如何使用`YUI3`实现一个特殊的组件——一个可展开的`Overlay`,它内部展示了一个树形结构(Tree),并且树节点支持拖放(Drag and Drop)功能。 首先,`Overlay`是`YUI3`中的一个基础...
在"ExtJS4官方指南翻译:DragandDrop拖放/Grid组件/Tree组件/容器与布局"中,我们将会探讨以下几个核心概念: 1. **Drag and Drop(拖放)**: ExtJS4提供了完善的拖放支持,允许用户通过鼠标操作在界面上移动元素...
在Vue.js框架中实现一个可拖拽的树形表格是一项技术挑战,涉及到组件设计、事件处理、数据管理和DOM操作...在实际项目中,还可以考虑集成第三方库如`vuedraggable`,它封装了Drag and Drop API,简化了拖放功能的实现。
这个实例涉及的是在Flex中的Tree组件实现节点的内部拖放功能,这对于创建交互式用户界面,尤其是数据层级结构的展示非常有用。在本文中,我们将详细探讨如何在Flex的Tree组件中实现节点的拖放操作,并且限制可拖动的...
拖拽功能(Drag and Drop)则是指允许用户通过鼠标选择并移动元素到目标位置的技术。在树菜单中,拖拽功能使得用户可以方便地移动或复制节点,这对于数据管理来说非常实用。例如,用户可以轻松地调整文件夹结构,...
本文将深入探讨如何在MFC环境中实现一个具有拖放功能的列表控件,即"A.Drag.and.Drop.List.Control"。 首先,我们需要了解MFC中的拖放操作基本原理。在MFC中,拖放功能是通过实现OleDragDrop和OleInitialize等接口...
在这个特定的例子"drag-drop-folder-tree.zip_ajax_dhtmlxtree_dr_drop_tree_tree_ja"中,开发者利用JavaScript的特性实现了一个拖放功能,这在AJAX(Asynchronous JavaScript and XML)开发中非常常见。AJAX允许...
要实现拖拽功能,我们需要利用EasyUI提供的drag and drop(DnD)功能。在本案例中,是从datagrid拖拽行到tree,这涉及到对`datagrid-dnd.js`文件的修改。这个文件是EasyUI官方提供的用于实现datagrid内部行拖拽的...
"VC.drag.tree.control.design.rar"这个压缩包提供了一组代码资源,专门用于实现这样的功能。下面将详细介绍如何在VC++中设计和实现一个支持拖放操作的树形控件。 首先,我们需要理解拖放(Drag and Drop)的基本...
在本教程中,我们将深入探讨如何在MFC中实现Tree Control的拖放功能,这是一项扩展功能,可以增加用户的交互性和操作便利性。 首先,拖放功能涉及到Windows的消息处理机制。在MFC中,我们通常需要重载某些成员函数...
1. **HTML5 Drag and Drop API**: 这是实现拖放功能的基础,它允许开发者创建可拖动元素,并定义它们在何处可以被放置。HTML5中的`draggable`属性设置为`true`,即可使元素具有拖放功能。同时,通过监听`dragstart`...
3. **拖拽功能**:用户可以通过鼠标拖动节点改变树形结构,这种功能在组织结构、任务分配或者文件管理场景下非常实用,允许用户自由调整数据层次关系。 4. **增、删、改功能**:组件支持添加新的子节点、删除节点...
**jsTree 实例详解** jsTree 是一个流行的 JavaScript 库,专门用于创建、操作和展示交互式的树型结构。在 Web 开发中,它常被用于构建目录结构、组织数据或者构建导航菜单。jsTree 提供了丰富的 API 和多种主题,...
3. **拖放(Drag & Drop)**:通过 `dnd` 插件,用户可以轻松地移动节点,实现树的重新排序。 4. **搜索(Search)**:内置的搜索功能让用户快速定位到特定节点。 5. **异步加载(Lazy Loading)**:对于大型数据...
本文将深入探讨如何实现一个具有拖放功能的`CTreeCtrl`,即`dragtree(可拖动CTreeCtrl)`,以及这一功能对用户界面交互性的重要提升。 拖放功能在现代用户界面设计中扮演着关键角色,它提供了直观且便捷的操作方式,...
在本案例中,"js 实现的Tree目录树"指的是利用JavaScript来创建一种数据结构——树形目录,这种结构常用于文件系统、组织数据或者构建用户界面,尤其是文件管理器等应用场景。 树形目录结构是一种模仿自然界中树的...