2012-04-26 8 views
6

क्या कोई इन दोनों के बीच अंतरों पर प्रकाश डाला जा सकता है और दोनों उदाहरण आवश्यक हैं ?!EventQueue.invokeLater vrs SwingUtilities.invokeLater

मेरे पास एक ऐसा एप्लिकेशन है जो दोनों इंटरैक्टिव रूप से उपयोग करता है, लेकिन यह जानना चाहता है कि कोई दूसरे से बेहतर है या नहीं। जाहिर है, वे दोनों Runnable object स्वीकार करते हैं, और इसलिए मेरे लिए - मुझे लगता है कि मैं कौन सा मुझे पसंद कर सकता हूं।

विभिन्न वर्गों में इन दो समान कार्यों क्यों? मुझे पता है कि एक अजीब और दूसरी स्विंग में है, लेकिन क्या वे वही काम नहीं करते हैं?

+1

के संभावित डुप्लिकेट [SwingUtilities.invokeLater() बनाम EventQueue.invokeLater()] (http://stackoverflow.com/questions/8847083/swingutilities-invokelater-vs-eventqueue-invokelater) – xmedeko

उत्तर

12

SwingUtilities.invokeLater केवल इसलिए मौजूद है क्योंकि EventQueue.invokelater 1.2 में पेश किया गया था, लेकिन स्विंग 1.1 के लिए उपलब्ध था। जेआरई में स्विंग ने हमेशा EventQueue संस्करण कहा है। swingall.jar में कुछ हैक था जहां उसने एक घटक बनाया, और पश्चाताप पर लंबित संचालन निष्पादित किया।

invokeLaterEventQueue के बारे में है। मैं सीधे विधि का उपयोग करने का सुझाव देते हैं। SwingUtilities सिर्फ एक डंपिंग ग्राउंड है। मैंने SwingUtilities.invokeLater का उपयोग करके बहुत कुछ देखा है संभवतः स्विंग एडब्ल्यूटी पर निर्भर नहीं है।

4

जैसा कि जावाडोक में वर्णित है, वे वही हैं, उदा। invokeAndWait विधि जावाडोक से एक कॉपी-पेस्ट

1,3 के रूप में इस विधि सिर्फ java.awt.EventQueue.invokeAndWait() के लिए एक आवरण है

तो आप उन्हें मिश्रण कर सकते हैं और यह कोई फर्क नहीं पड़ता आप किस संस्करण का उपयोग करते हैं।

5

असल SwingUtilities # invokeLater (Runnable doRun) का कोड है:

public static void invokeLater(Runnable doRun) { 
    EventQueue.invokeLater(doRun); 
} 

तो यह बिल्कुल वही बात है!

संबंधित मुद्दे