传递参数物件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) {
分享到:
相关推荐
鼠标拖动物品源码 实现方法: 为了实现这种效果,又不改变原来程序的逻辑。我做了一个光标组件(CoolCursor,目前最简易版) ,用来更新光标。结构基本上是这样的:为了实现这种效果,又不改变原来程序的逻辑。我...
两边的图标分别可随便拖动,但左右不可以互换,因为设置了拖放限制,需要type一样才能相互拖动。 我也没写过大型的MMORPG游戏,不知道正真需要怎么样的组件,玩玩,随便先做个简单的。 该组件属于轻量级组件,基本...
"道具栏拖动物品效果"是一个关键的用户体验元素,它涉及到用户界面(UI)设计、交互设计以及编程实现。本篇将深入探讨这个主题,详细介绍道具栏拖放功能的工作原理、设计考虑以及实现方法。 首先,道具栏通常是一个...
要实现"拖拽元素到指定的对应位置",我们需要在`.droppable()`的`drop`回调函数中处理逻辑。当拖动元素被释放时,可以根据需要调整其位置,例如将其插入到目标元素的特定子元素后面,或者改变其CSS样式以适应新位置...
实现类似游戏武侠风云中背包物品的拖动,基于as的库进行编写,没有使用DragManager,DragManager的特效太多,没有研究怎样去除。 本例中做到了两个面板中各自物品的拖动及互相拖动,比较实用。 以前总是基于...
如果物品被拖拽到了目标位置(如ImgGoalPosition),则应该将物品放置在该位置;如果没有拖拽到目标位置,则物品应回到原来的位置。 #### 三、脚本的添加与布局排列 完成脚本编写后,接下来需要将脚本添加到游戏中...
惯性拖拽是一个常见的物理效果,它使得用户在触摸或鼠标操作对象时,即使手指离开屏幕,对象仍会继续保持一段时间的运动状态,模拟现实世界中的惯性现象。本篇文章将深入探讨AS3实现惯性拖拽的原理和方法。 首先,...
`draggable()`使得元素可被拖动,而`droppable()`则定义了可接收拖动元素的目标区域。 1. **启用拖动功能**: 首先,我们需要将商品列表中的元素设置为可拖动。通过调用`.draggable()`并传入适当的配置项,例如: ...
Unity3d 背包物品拖拽功能实现 Unity3d 是一个功能强大且流行的游戏引擎,它提供了许多实用的功能模块来帮助开发者快速构建游戏。今天,我们将探讨如何使用 Unity3d 实现背包物品拖拽功能,包括分页功能。 在 ...
- **游戏元素**:在某些游戏中,玩家可以拖动物品或角色。 - **网页编辑器**:在线编辑器允许用户通过拖动调整元素位置。 - **数据可视化**:图表或图形可以被拖动以进行交互式探索。 综上所述,`DIV+CSS拖拽...
这是一个JQ拖放插件. 功能: 限制拖动范围 ...类似物品栏里的物品可相互拖拽,而且可以有限制拖放.如:下面格子里的东西可以拖到上面 但是不能拖到下面的其他格子里; 上面格子里的东西可以在上下格子里任意拖放
在默认情况下,玩家可以通过按住鼠标右键或者在物品栏中拖动物品来丢弃它们。这种方式虽然方便,但也可能导致物品的无谓损失。WorldNoDrop插件通过修改游戏代码,禁止了这种行为,使得物品无法被丢弃在游戏世界中。...
您可以在按住拖动物品或仅单击一次拖动之间进行选择。 右键选项 右键快速操作 功能: 装备 打开 检查 丢弃 易于实现更多功能! 创建一个可脚本化对象以向项目添加更多选项...点击操作基于可脚本化对象事件,易于...
助力快速用 UGUI 完成图标互换,数据互换 为初学者节省宝贵的时间,避免采坑! 文档地址:https://blog.csdn.net/ChinarCSDN/article/details/89932238
实现了通过读取Json数据自动生成菜单物品,在空槽中的物品摆放等。
这是一个用Flash AS3.0制作出来的一个拖动小动画
在开发中可能会遇到将道具拖动到某个位置的需求,这里提供了一种简单方便的实现方式,欢迎品鉴~
2. **事件驱动编程**:在AS3中,游戏交互通过事件触发,例如玩家点击、拖动物品等。你需要掌握`Event`类和`EventListener`接口,以响应这些用户输入。 3. **图形用户界面(GUI)**:背包系统通常涉及复杂的UI元素,...
- **游戏开发**:实现角色或物品的拖拽。 - **UI设计工具**:拖拽控件进行设计。 ### 五、扩展技术 除了基础的拖动实现外,还可以考虑以下几种技术增强用户体验: - **动画效果**:通过CSS3动画或JavaScript动画...
此外,为了提高用户体验,可能会实现拖放功能,让玩家可以直观地通过拖拽物品来完成操作。这需要使用Unity的EventSystem和IPointerDownHandler, IPointerUpHandler等接口来实现。 最后,`Assets`文件夹通常是Unity...