随着摆动拖放

时间:2009-11-23 20:45:35

标签: java swing

我需要一些帮助。是否有可能模拟拖动和放大器没有注册组件就丢弃了? 例如。我在窗口的任何地方单击鼠标键并按住鼠标键,此时,我想用Java编程创建或模拟DragSourceEvent

这可能吗?

更新

关于鲍勃的回复,至少我明白了,我可以创建一个用于拖拽的听众。下降:

DragSource dragSource = new DragSource();
DragGestureListener listener = new DragGestureListener() {
    public void dragGestureRecognized(DragGestureEvent event) {
        event.startDrag (null, strSel) ;
        ...
    }
}

listener.dragGestureRecognized(new DragGestureEvent(
       new DragGestureRecognizer(dragSource, component) {

}, DnDConstants.ACTION_COPY, new Point(0,0), events ));

但不幸的是我得到了这个例外:

  

java.lang.IllegalArgumentException异常:   来源的行动   java.awt.dnd.DragSourceContext中。(DragSourceContext.java:169)     在   java.awt.dnd.DragSource.createDragSourceContext(DragSource.java:454)     在   java.awt.dnd.DragSource.startDrag(DragSource.java:293)     在   java.awt.dnd.DragSource.startDrag(DragSource.java:403)     在   java.awt.dnd.DragGestureEvent.startDrag(DragGestureEvent.java:203)

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您提出的问题: 我没有尝试过,但理论上你应该能够创建Event对象并从其中一个系统类获取Swing事件队列的句柄。但是,如果没有有效的组件,方法尝试使用该事件时可能会出现问题。

你可能意味着什么: 为标准窗口注册事件 - 您应该能够为空的JPanel或JFrame设置拖放支持,但这需要一些黑客攻击。拖拽当没有内置时,Drop在这个级别上工作很痛苦 - 我建议使用像隐形组件之类的东西。