`
henry406
  • 浏览: 115806 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

拖拽表数据实现数据的传输

    博客分类:
  • java
阅读更多
将表中一条记录拖拽至树中节点时需在表中监听TransferHandler事件
fetchTable.setTransferHandler(new ReportTree_TransferHandler());
类ReportTree_TransferHandler继承至TransferHandler 具体实现如下所示:
    class ReportTree_TransferHandler extends TransferHandler {
        DataFlavor localObjectFlavor;
        String localObjectType = DataFlavor.javaJVMLocalObjectMimeType +
                                 ";class=java.io.InputStream";
        DataFlavor[] supportedFlavors = {localObjectFlavor};

        public ReportTree_TransferHandler() {
            try {
                localObjectFlavor = new DataFlavor(localObjectType);
            } catch (ClassNotFoundException ex) {
                System.out.println(ex.getException());
            }
        }

        public Transferable createTransferable(JComponent c) {
            isTableDragged = true;
            int selrow = fetchTable.getSelectedRow();
            SOW sow = (SOW) fetchTable.getValueAt(selrow, 0);
            DefaultMutableTreeNode treeNode = new DefaultMutableTreeNode(new
                    FetchTable(new Long(sow.getId()), sow.getName()));

            return new TreeNodeTransferable(treeNode);
        }

        public int getSourceActions(JComponent c) {
            return COPY_OR_MOVE;
        }

        class TreeNodeTransferable implements Transferable {
            Object object;
            public TreeNodeTransferable(Object o) {
                object = o;
            }

            public Object getTransferData(DataFlavor df) throws
                    UnsupportedFlavorException, IOException {
                if (isDataFlavorSupported(df)) {
                    return object;
                } else {
                    throw new UnsupportedFlavorException(df);
                }
            }

            public boolean isDataFlavorSupported(DataFlavor df) {
                return (df.equals(localObjectFlavor));
            }

            public DataFlavor[] getTransferDataFlavors() {
                return supportedFlavors;
            }
        }
    }


树是DnDDragJTree的一个实例,重写了drop(DropTargetDropEvent dtde)方法
在该方法中获取传输的值为:
Object droppedObject = dtde.getTransferable().getTransferData(
                        localObjectFlavor);
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    La bVi ew实现远程数据采集与传输

    ### La bVi ew实现远程数据采集与传输 #### 引言 随着计算机技术与网络技术的飞速发展,现代仪器系统越来越依赖于计算机及其强大的处理能力。计算机与仪器的紧密结合产生了全新的概念——虚拟仪器(Virtual ...

    QT 拖拽实现2个控件的数据交互

    这通常包括更复杂的MimeData格式,支持多种类型的数据传输,以及更精细的事件处理逻辑。 总结一下,QT中的拖放操作和MimeData是实现控件间数据交互的关键。理解如何启用拖放功能、处理拖放事件以及使用MimeData传递...

    Proteus和LabVIEW联合仿真,实现串口数据传输及波形显示

    本项目聚焦于“Proteus和LabVIEW”的联合仿真,旨在实现串口数据传输以及波形的实时显示。这两个软件在工程实践中都有其独特的作用:Proteus是著名的电子电路仿真软件,而LabVIEW则是由NI公司推出的图形化编程环境,...

    C#控件数据拖放操作

    这涉及到Windows Forms或WPF应用中的事件处理、数据格式化以及数据传输过程。 首先,让我们理解拖放操作的基本步骤: 1. **启用拖源**:拖放操作的第一步是使某个控件成为拖源,即可以被拖动的数据来源。在C#中,...

    js控制多个div拖拽和拖动、且能保存数据至cookie、数据库、xml

    这通常涉及到HTTP的POST或PUT方法,以及JSON格式的数据传输。 最后,XML是一种常见的数据交换格式,可以用JavaScript的DOM(Document Object Model)API来创建和操作XML文档。将div的状态信息转换为XML结构,然后...

    基于钉钉宜搭开发的数据自动传输和处理程序V1.0-20231226

    7. **StationGreen_CodeV1.0_20231226_packed.exe**:这是一个打包后的可执行文件,很可能包含了整个数据传输和处理程序的运行环境和相关代码。用户通过运行这个文件启动程序。 8. **StationGreen_CodeV1.0插件.exe...

    基于vue、iview实现tree组件可拖拽、双击编辑

    在这些事件中,你可以处理拖动过程中的数据传输、目标位置判定及拖放后的数据更新等逻辑。Vue的响应式系统会自动更新视图,反映数据的变化。 双击编辑功能可以通过监听`dblclick`事件来实现。当用户双击某个节点时...

    QTreeView实现树节点之间拖拽.zip

    1. **数据序列化**:在拖放过程中,需要将要移动或复制的数据转换为可传输的格式,如`QMimeData`。 2. **视觉反馈**:提供拖动时的视觉提示,如高亮目标位置。 3. **事件过滤**:可能需要自定义`QObject`作为事件...

    vue实现移动端拖动排序

    其中,触摸开始时记录触摸点的初始坐标(down方法),触摸移动时计算新的坐标并更新元素的位置(move方法),以及在触摸结束时进行边界处理和数据传输(end方法)。 具体的触摸事件处理逻辑包括: - down方法:阻止...

    VC MFC拖拽功能的实现

    COleDataSource用于包装要传输的数据;而COleDataObject则是数据与拖放操作之间的桥梁。 1. **启用拖放功能** - 首先,你需要在你的MFC视图或对话框类中包含必要的头文件,如`#include <afxole.h>`。 - 继承你的...

    QT拖放事件之三:自定义拖放操作-利用QDrag来拖动完成数据的传输

    当用户执行拖放操作时,`QDrag`对象会创建一个代表被拖动数据的图标,并在屏幕上跟随鼠标移动。`QDrag`类通常与`QMimeData`一起使用,后者用于存储拖动的数据,并提供了多种数据类型的支持。 实现自定义拖放操作的...

    ListView多个控件中拖动数据项

    总结来说,实现"ListView多个控件中拖动数据项"的功能涉及到以下几个关键点: 1. 自定义Adapter以处理拖放逻辑。 2. 实现拖放监听器,处理拖放事件。 3. 在`onDrop()`中移动数据项,同时检查目标ListView中是否存在...

    QT拖放事件之四:自定义拖放操作-利用QDrag来拖动完成数据的传输-案例demo

    2. **设置拖动数据**:在创建`QDrag`对象时,我们可以通过`setMimeData`方法设置携带的数据。这通常包括文本、URL、自定义格式等。例如,我们可以创建一个`QMimeData`对象,添加需要传输的数据,然后将其设置给`...

    Ext实现的拖拽树和表格之间的拖拽

    在树和表格之间进行拖拽,我们需要配置这两个组件以支持拖放操作,并定义数据传输方式。 1. **配置DragSource**: 对于树形视图,我们需要将每个节点实例化为DragSource。这可以通过在树节点配置中指定`draggable:...

    可以实现拖拽的案例

    在IT领域,拖拽(Drag and Drop)是一种常见的用户交互技术,它允许用户通过鼠标或触摸设备将一个元素从一处“拖动”到另一处“放下”,以完成各种操作,如文件移动、对象布局或者数据传输等。在这个“可以实现拖拽...

    Qt实现Table-->Table控件拖拽的工程

    5. **数据传输** 数据在拖动过程中会封装在QMimeData对象中,通过QDrag对象传递。调用`QDrag::exec()`启动拖放操作,此时数据将在桌面上以可视化的形式显示。 6. **目标Table控件处理** 在目标Table控件中,我们...

    MCGS组态软件与VB数据交换的实现

    同时,为了确保系统的稳定性和实时性,需要对数据传输过程中的错误处理、数据校验和通信效率进行优化。 总的来说,《MCGS组态软件与VB数据交换的实现》这份文档为读者提供了在工业自动化系统开发中整合MCGS和VB的...

    QT树节点拖拽,支持两个QTreewidget相互拖拽

    总之,实现`QT`中的`QTreeWidget`节点拖放,尤其是两个`QTreeWidget`之间的相互拖放,需要对QT的拖放机制、事件处理以及数据传输有清晰的理解。这个过程虽然复杂,但能显著提升用户界面的交互性和用户体验。希望下载...

    用RTDX实现数据的实时双向传输_刘景元.pdf

    3. 实时数据传输:在目标应用程序运行过程中,可以实时地将数据从MATLAB发送到目标系统,同时也可以从目标系统实时接收数据到MATLAB。这个过程可以是单向的,也可以是像本文件中描述的那样,进行双向传输。 4. 数据...

    QTreeWidget项目拖拽功能

    在本项目“QTreeWidget项目拖拽功能”中,我们关注的重点是实现QTreeWidget之间的拖放(Drag and Drop)操作。这种功能极大地提高了用户体验,让用户能够方便地重新组织和排列树中的项。下面,我们将深入探讨实现这...

Global site tag (gtag.js) - Google Analytics