2012-01-09 28 views
6

मैं जावा स्विंग के साथ निम्नलिखित लोड हो रहा है एनीमेशन का एहसास करना चाहते हैं:जावा घुमाओ लोड हो रहा है एनीमेशन

enter image description here

चक्र दक्षिणावर्त स्पिन है।

इसे बनाने का सबसे अच्छा तरीका क्या होगा?

बहुत बहुत धन्यवाद।

+0

sprites का एक गुच्छा स्वैपिंग इसके लिए काम कर सकता है। बेशक लोडिंग को पृष्ठभूमि थ्रेड में किया जाना चाहिए, जैसे स्विंगवर्कर द्वारा प्रदान किया गया। –

+0

यह भी देखें [क्यू एंड ए] (http://stackoverflow.com/questions/6238037/how-do-i-align-this-text- ठीक से)। – trashgod

उत्तर

4

आप अपने मौजूदा आइकन का उपयोग करके अपनी खुद की एनीमेशन बनाने के लिए Animated Icon कक्षा का उपयोग कर सकते हैं।

3

नियमित Java2D कॉल का उपयोग करके इसे कस्टम घटक या कस्टम आइकन के साथ खींचा जा सकता है। मेरे लिए यह के साथ खींचे गए काफी मोटे BasicStroke के साथ Arc2D जैसा दिखता है।

वैकल्पिक रूप से, इंकस्केप (या अन्य ग्राफिक्स प्रोग्राम) से फ्रेम निर्यात करें और उन्हें छवियों के रूप में लोड करें।

9

बस एक छवि आइकन और एनिमेटेड gif का उपयोग करें। ImageIcon में setImageObserver देखें।

लोडिंग आइकन विभिन्न प्रकार के ऑनलाइन जनरेटर जैसे AjaxLoad का उपयोग करके किया जा सकता है।

+0

बहुत नीस! उपयोगी! – drzymala

6

उम्मीद है कि इसके लिए बहुत देर हो चुकी है।

private JPanel loadingPanel() { 
    JPanel panel = new JPanel(); 
    BoxLayout layoutMgr = new BoxLayout(panel, BoxLayout.PAGE_AXIS); 
    panel.setLayout(layoutMgr); 

    ClassLoader cldr = this.getClass().getClassLoader(); 
    java.net.URL imageURL = cldr.getResource("img/spinner.gif"); 
    ImageIcon imageIcon = new ImageIcon(imageURL); 
    JLabel iconLabel = new JLabel(); 
    iconLabel.setIcon(imageIcon); 
    imageIcon.setImageObserver(iconLabel); 

    JLabel label = new JLabel("Loading..."); 
    panel.add(iconLabel); 
    panel.add(label); 
    return panel; 
} 

इस दृष्टिकोण से कुछ अंक:

मैं अपने JPanel के अंदर इस तरह ऐनिमेटेड gif पाने में कामयाब रहे
1. छवि फ़ाइल जार के भीतर है;
2. ImageIO.read() एक BufferedImage देता है, जो ImageObserver अद्यतन नहीं करता है;
3. जार फ़ाइल में बंडल की गई छवियों को ढूंढने का एक और विकल्प जावा क्लास लोडर से पूछना है, जो कोड आपके प्रोग्राम को लोड करता है, फाइलें प्राप्त करने के लिए। यह जानता है कि चीजें कहां हैं।

तो ऐसा करके मैं अपने जेपीनेल के अंदर अपना एनिमेटेड gif प्राप्त करने में सक्षम था और यह एक आकर्षण की तरह काम करता था।

+1

एनिमेटेड gif कोई विकल्प नहीं है, क्योंकि इसमें अच्छे और चिकनी पारदर्शी प्रभाव नहीं हैं। एक स्पिनर को ज्यादातर पारदर्शी और 100% पारदर्शी पृष्ठभूमि के साथ, जो gifs एनीमेशन बदसूरत और पिक्सलेट किए बिना समर्थन नहीं करते हैं। यह सिर्फ आयताकार सीमाओं के लिए और वस्तुओं के बीच लुप्तप्राय के बिना काम करता है। तो ... यह सही तरीके से कैसे करें? एपीएनजी ऐसा कर सकता है, लेकिन निश्चित रूप से जावा इसे मुफ्त libs का समर्थन नहीं करता है। –

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