`
大器晚成
  • 浏览: 52828 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

拖拽物品

 
阅读更多
传递参数物件ID值
修改部分代码:jmetest.awt.swingui.dnd.TestDnd
   protected void buildUI() {
            new JMEDragAndDrop(this.getDesktop());

            JInternalFrame frame = new JInternalFrame("dnd test", true, true);
            frame.setLayout(new GridLayout(4, 4));
            JInternalFrame frame1 = new JInternalFrame("dnd test1", true, true);
            frame1.setLayout(new GridLayout(4, 4));

            frame1.setIconifiable(true);
            Icon icon1 = getResizedIcon("kofei.png");
            frame.add(new DndIcon(this, icon1,201));
            Icon icon2 = getResizedIcon("Monkey.png");
            frame.add(new DndIcon(this, icon2,205));

            // few empty icons to let you play
            for (int i = 0; i < 13; i++) {
                frame.add(new DndIcon(this, null));
            }
            Icon icon3 = getResizedIcon("logo.jpg");
            frame.add(new DndIcon(this, icon3,209));


            DndIcon icons[]=new DndIcon[16];
            for (int i = 0; i < 16; i++) {
                icons[i]=new  DndIcon(this, null,i+1){

                    @Override
                    public void receive(int partId) {
                        System.out.println("received:"+partId);
                    }
                };
                frame1.add(icons[i]);
            }
            frame.setSize(64 * 4, 64 * 4);
            frame.setLocation(100, 100);
            frame.setVisible(true);

            frame1.setSize(64 * 4, 64 * 4);
            frame1.setLocation(320, 100);
            frame1.setVisible(true);

            this.getDesktop().getJDesktop().add(frame);
            this.getDesktop().getJDesktop().add(frame1);

            MouseInput.get().setCursorVisible(true);
        }

        private Icon getResizedIcon(String fileName) {
            ImageIcon icon = new ImageIcon(this.getClass().getResource("/jmetest/data/images/" + fileName));
            icon.setImage(icon.getImage().getScaledInstance(64, 64, 16));
            return icon;
        }
    }

    /**
     * DndIcon is the drag source and the drop target, so you can easily drag /
     * swap icons from different panels
     *
     * @author Nomis
     */
    public class DndIcon extends JLabel implements JMEDragGestureListener, JMEDragSourceListener, JMEDropTargetListener {

        private static final long serialVersionUID = 1L;
        private JMEDragAndDrop dndSupport;
        public int partID=0;
        public DndIcon(JMEDesktopState desktopSate, Icon icon) {
            this.setIcon(icon);
            this.dndSupport = desktopSate.getDesktop().getDragAndDropSupport();
            new JMEMouseDragGestureRecognizer(dndSupport, this, DnDConstants.ACTION_COPY_OR_MOVE, this);
            this.setBorder(BorderFactory.createLineBorder(Color.black));
        }

        public DndIcon(JMEDesktopState desktopSate, Icon icon,int partID) {
            this.setIcon(icon);
            this.dndSupport = desktopSate.getDesktop().getDragAndDropSupport();
            new JMEMouseDragGestureRecognizer(dndSupport, this, DnDConstants.ACTION_COPY_OR_MOVE, this);
            this.setBorder(BorderFactory.createLineBorder(Color.black));
            this.partID=partID;
        }

        /**
         *  接受一个物体
         */
        public void drop(JMEDropTargetEvent e) {
            TransferableImage t = (TransferableImage) e.getTransferable();
            Icon icon = null;
            try {
                icon = (Icon) t.getTransferData(null);
            } catch (UnsupportedFlavorException e1) {
                e1.printStackTrace();
            } catch (IOException e1) {
                e1.printStackTrace();
            }
            System.out.println("------"+partID);
            DndIcon source = (DndIcon) e.getSource();
            receive(source.partID);
            if (icon != null) {
                // Set current icon to the source
                source.setIcon(this.getIcon());
                this.setIcon(icon);
            }

        }

        public void receive(int partId){

        }

        /**
         * 拉出的时候
         * @param dge
         */
        public void dragGestureRecognized(JMEDragGestureEvent dge) {
1
0
分享到:
评论

相关推荐

    鼠标拖动物品源码2012720

    鼠标拖动物品源码 实现方法: 为了实现这种效果,又不改变原来程序的逻辑。我做了一个光标组件(CoolCursor,目前最简易版) ,用来更新光标。结构基本上是这样的:为了实现这种效果,又不改变原来程序的逻辑。我...

    flash写的可拖拽物品栏组件(源码)

    两边的图标分别可随便拖动,但左右不可以互换,因为设置了拖放限制,需要type一样才能相互拖动。 我也没写过大型的MMORPG游戏,不知道正真需要怎么样的组件,玩玩,随便先做个简单的。 该组件属于轻量级组件,基本...

    道具栏拖动物品效果.。。。。

    "道具栏拖动物品效果"是一个关键的用户体验元素,它涉及到用户界面(UI)设计、交互设计以及编程实现。本篇将深入探讨这个主题,详细介绍道具栏拖放功能的工作原理、设计考虑以及实现方法。 首先,道具栏通常是一个...

    JQuery拖放,拖拽到指定的位置,拖拽元素,鼠标拖动

    要实现"拖拽元素到指定的对应位置",我们需要在`.droppable()`的`drop`回调函数中处理逻辑。当拖动元素被释放时,可以根据需要调整其位置,例如将其插入到目标元素的特定子元素后面,或者改变其CSS样式以适应新位置...

    as拖动,简单,实用,类似游戏中背包物品拖动

    实现类似游戏武侠风云中背包物品的拖动,基于as的库进行编写,没有使用DragManager,DragManager的特效太多,没有研究怎样去除。 本例中做到了两个面板中各自物品的拖动及互相拖动,比较实用。 以前总是基于...

    背包系统拖拽基本原理源码与使用方法

    如果物品被拖拽到了目标位置(如ImgGoalPosition),则应该将物品放置在该位置;如果没有拖拽到目标位置,则物品应回到原来的位置。 #### 三、脚本的添加与布局排列 完成脚本编写后,接下来需要将脚本添加到游戏中...

    AS3惯性拖拽

    惯性拖拽是一个常见的物理效果,它使得用户在触摸或鼠标操作对象时,即使手指离开屏幕,对象仍会继续保持一段时间的运动状态,模拟现实世界中的惯性现象。本篇文章将深入探讨AS3实现惯性拖拽的原理和方法。 首先,...

    jquery实现拖拽到购物车

    `draggable()`使得元素可被拖动,而`droppable()`则定义了可接收拖动元素的目标区域。 1. **启用拖动功能**: 首先,我们需要将商品列表中的元素设置为可拖动。通过调用`.draggable()`并传入适当的配置项,例如: ...

    Unity3d背包物品拖拽

    Unity3d 背包物品拖拽功能实现 Unity3d 是一个功能强大且流行的游戏引擎,它提供了许多实用的功能模块来帮助开发者快速构建游戏。今天,我们将探讨如何使用 Unity3d 实现背包物品拖拽功能,包括分页功能。 在 ...

    DIV+CSS拖拽功能

    - **游戏元素**:在某些游戏中,玩家可以拖动物品或角色。 - **网页编辑器**:在线编辑器允许用户通过拖动调整元素位置。 - **数据可视化**:图表或图形可以被拖动以进行交互式探索。 综上所述,`DIV+CSS拖拽...

    jquery仿物品栏拖拽

    这是一个JQ拖放插件. 功能: 限制拖动范围 ...类似物品栏里的物品可相互拖拽,而且可以有限制拖放.如:下面格子里的东西可以拖到上面 但是不能拖到下面的其他格子里; 上面格子里的东西可以在上下格子里任意拖放

    我的世界WorldNoDrop禁止世界丢弃物品插件[全版本].zip

    在默认情况下,玩家可以通过按住鼠标右键或者在物品栏中拖动物品来丢弃它们。这种方式虽然方便,但也可能导致物品的无谓损失。WorldNoDrop插件通过修改游戏代码,禁止了这种行为,使得物品无法被丢弃在游戏世界中。...

    终极背包库存插件:Ultimate Grid Inventory v1.4.1

    您可以在按住拖动物品或仅单击一次拖动之间进行选择。 右键选项 右键快速操作 功能: 装备 打开 检查 丢弃 易于实现更多功能! 创建一个可脚本化对象以向项目添加更多选项...点击操作基于可脚本化对象事件,易于...

    Unity拖动背包物品/技能图标位置互换效果

    助力快速用 UGUI 完成图标互换,数据互换 为初学者节省宝贵的时间,避免采坑! 文档地址:https://blog.csdn.net/ChinarCSDN/article/details/89932238

    背包系统,读取Json数据生成物品,物品拖拽功能

    实现了通过读取Json数据自动生成菜单物品,在空槽中的物品摆放等。

    Flash AS3.0 拖动小动画

    这是一个用Flash AS3.0制作出来的一个拖动小动画

    Unity实现物品拖拽

    在开发中可能会遇到将道具拖动到某个位置的需求,这里提供了一种简单方便的实现方式,欢迎品鉴~

    AS3培训-游戏背包系统工程源码

    2. **事件驱动编程**:在AS3中,游戏交互通过事件触发,例如玩家点击、拖动物品等。你需要掌握`Event`类和`EventListener`接口,以响应这些用户输入。 3. **图形用户界面(GUI)**:背包系统通常涉及复杂的UI元素,...

    div 拖动 拖动层

    - **游戏开发**:实现角色或物品的拖拽。 - **UI设计工具**:拖拽控件进行设计。 ### 五、扩展技术 除了基础的拖动实现外,还可以考虑以下几种技术增强用户体验: - **动画效果**:通过CSS3动画或JavaScript动画...

    UGUI背包数据管理.zip

    此外,为了提高用户体验,可能会实现拖放功能,让玩家可以直观地通过拖拽物品来完成操作。这需要使用Unity的EventSystem和IPointerDownHandler, IPointerUpHandler等接口来实现。 最后,`Assets`文件夹通常是Unity...

Global site tag (gtag.js) - Google Analytics