2010-07-22 11 views
5

मुझे पता है कि थ्रेड का उपयोग सी # DoEvents() का उपयोग करने से अधिक कुशल है, लेकिन मैं अभी भी सोच रहा था कि जावा में समकक्ष कार्य है या नहीं। मैं इसके लिए googled, लेकिन मुझे कुछ भी नहीं मिला।आवेदन। डॉवेंट्स() -> जावा में समतुल्य फ़ंक्शन?

उत्तर

2

आप Thread.yield() का उपयोग कर सकते हैं, जो जावा काउंटरपार्ट है जो स्वेच्छा से प्रोसेसर के नियंत्रण को छोड़ने के लिए है।

+6

'Thread.yield()' नहीं होगा अगर कॉलिंग कोड जीयूआई थ्रेड पर है, तो मदद करें, क्योंकि ईवेंट एक ही थ्रेड पर भेजे जाते हैं। – amotzg

0

इसे इवेंट लूप कहा जाता है। यह article दिखाता है कि जावा में UI घटकों में ईवेंट कैसे प्रबंधित किए जाते हैं।

1

आप सभी लंबित घटनाओं के बाद Runnable जोड़ने के लिए EventQueue.invokeLater() का उपयोग कर सकते हैं। इसका परिणाम सी # के DoEvents() जैसा है जो आपके द्वारा Runnable.run() विधि के अंदर डाले गए कोड से पहले आता है।

See Java documentation for EventQueue

उदाहरण के लिए, यदि आप सभी जीयूआई फोकस और उनके खो फोकस घटनाओं कम करने के लिए निष्पादित होने के लिए नियंत्रित करता है बताना चाहते हैं, तो आपको निम्न कोड का उपयोग कर सकते हैं:

@Override 
public void windowClosing(WindowEvent e){ 
    // Clear the focus to allow last changes to be noted. 
    KeyboardFocusManager.getCurrentKeyboardFocusManager().clearGlobalFocusOwner(); 
    // We want to let other events (e.g. lost focus) run before we start closing. 
    EventQueue.invokeLater(new Runnable() { 
     @Override public void run() { 
      // Do actual closing... 
     } 
    }); 
} 
संबंधित मुद्दे