2009-11-23 18 views
5

के साथ खींचें और छोड़ें मुझे कुछ मदद चाहिए। क्या कोई घटक पंजीकृत किए बिना & ड्रॉप को ड्रैग करना संभव है?
उदा। मैं विंडो पर कहीं भी माउसकी पर क्लिक करता हूं और माउसकी को नीचे दबाता हूं, इस समय, मैं जावा के साथ प्रोग्रामेटिक रूप से 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.DragSour पर ceContext। (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

हालांकि आप एक घटक पंजीकृत क्यों नहीं करना चाहते हैं? हां, यह सही है, सभी सही एपीआई को कॉल करने के लिए, लेकिन आप एक घटक भी पंजीकृत कर सकते हैं, और इसे अदृश्य बना सकते हैं आदि। – bguiz

उत्तर

1

सवाल आप से पूछा: मैं इसे करने की कोशिश नहीं की है, लेकिन सिद्धांत रूप में आप इस प्रणाली वर्गों में से एक से घटना वस्तु स्विंग घटना कतार पर एक संभाल बना सकते हैं और प्राप्त करने में सक्षम होना चाहिए। हालांकि वैध घटक के बिना, घटनाओं के साथ काम करने की कोशिश करते समय समस्याएं हो सकती हैं।

क्या आप शायद मतलब: एक मानक खिड़की के लिए पंजीयन घटनाओं - आप खींचें की स्थापना की और एक खाली JPanel या JFrame के लिए ड्रॉप समर्थन में सक्षम होना चाहिए, लेकिन यह कुछ हैकिंग ले लेंगे। खींचें & ड्रॉप इस स्तर पर काम करने के लिए दर्द होता है जब निर्मित नहीं होता - मैं सुझाव देता हूं कि किसी अदृश्य घटक या कुछ के बजाय कुछ उपयोग करें।