我需要一些帮助.是否可以在不注册组件的情况下模拟拖放操作?
例如,我在窗口的任何地方单击鼠标键并按住鼠标键,此时,我想DragSourceEvent用Java 以编程方式创建或模拟鼠标键.
这可能吗?
更新:
关于Bob的回复,至少我明白了,我可以为拖放创建一个监听器:
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 ));
Run Code Online (Sandbox Code Playgroud)
但不幸的是我得到了这个例外:
java.lang.IllegalArgumentException:java.awt.dnd.DragSource上的java.awt.dnd.DragSource.createDragSourceContext(DragSource.java:454)中java.awt.dnd.DragSourceContext.(DragSourceContext.java:169)的源操作. java.awt.dnd.DragGestureEvent.startDrag(DragGestureEvent.java:203)中java.awt.dnd.DragSource.startDrag(DragSource.java:403)的startDrag(DragSource.java:293)
有什么建议?
您问的问题: 我还没有尝试过,但理论上您应该能够创建 Event 对象并从系统类之一获取 Swing 事件队列的句柄。但是,如果没有有效的组件,当方法尝试处理事件时可能会出现问题。
您可能的意思是: 为标准窗口注册事件——您应该能够为空的 JPanel 或 JFrame 设置拖放支持,但这需要一些技巧。当没有内置时,在这个级别上使用拖放是很痛苦的——我建议使用诸如不可见组件之类的东西来代替。
| 归档时间: |
|
| 查看次数: |
791 次 |
| 最近记录: |