2012-08-13 11 views
5

के साथ गतिशील रूप से लेआउट को पुनर्व्यवस्थित करें मैं स्विंग के साथ ट्विटर पर समान कार्यक्षमता वाले डेस्कटॉप ऐप का निर्माण कर रहा हूं। मेरे पास एक "फीड" पृष्ठ है जहां "ट्वीट्स" प्रदर्शित होते हैं।स्विंग

मेरे पास जेपीनल में "ट्वीट्स" है और जेपीनल के शीर्ष पर नई "ट्वीट्स" रखकर और पुराने लोगों को नीचे ले जाकर नए लोगों को गतिशील रूप से प्रदर्शित करना चाहते हैं। मैं हालांकि इस इच्छित रूप में है ताकि इसे लेआउट मैं चाहता था मैं jpanel.revalidate() कॉल करने के लिए किया था के साथ प्रदर्शित करने के लिए प्राप्त करने के लिए काम नहीं किया MigLayout के साथ ऐसा करने की कोशिश कर रहा था jpanel.add(tweet, "cell 0 0, wrap") का उपयोग करके।

यह आदर्श नहीं है क्योंकि प्रत्येक सेकंड में कई ट्वीट्स आ रही हैं और पैनल को फिर से निकालना काफी धीमा हो सकता है। क्या वैसे भी मैं पैनल के शीर्ष पर फिर से बिना नए "ट्वीट्स" जोड़ सकता हूं?

+1

आप अद्यतन करने के लिए एक 'TableModel' के रूप में' SwingWorker' एपीआई में दिखाया गया है इन दो जवाब को जोड़ सकते हैं। – trashgod

उत्तर

10

हालांकि गतिशील लेआउट संभव हो रहे हैं, पता चला here के रूप में और here, मैं एक TableModel कि पुशडाउन ढेर प्रभाव आप चाहते हैं, शायद एक एक आंतरिक Queue<Tweet> होने को दर्शाता है के साथ एक स्तंभ JTable का उपयोग करेंगे। JTable प्रतिपादन कुशल है, और घटक JScrollPane में अच्छी तरह से काम करता है।

10

संक्षिप्त उत्तर, नहीं। गंभीरता से, प्रश्न के बारे में सोचने के लिए एक पल लें। "मैं नई सामग्री जोड़ना चाहता हूं, लेकिन स्क्रीन अपडेट नहीं करना चाहता हूं", आपको लगता है कि यह कितना व्यवहार्य है?

आपको अंततः कुछ प्रकार की पेंटिंग करने की आवश्यकता होगी। प्रश्न कितनी बार है।

हालांकि ...

कुछ सरल तकनीकों (और मॉडलिंग) आप "सम्मिलित" कर सकते हैं बैच में अद्यतन, रीपेंट अधिक सार्थक करने के लिए अनुमति के साथ

(बल्कि तो प्रत्येक नए ट्वीट पेंटिंग, आप एक बैच रंग) ।

ऐसा करने के लिए आप SwingWorker जैसे कुछ का उपयोग कर सकते हैं। मूल रूप से publish ट्वीट करें और process विधि को बाद में भाग जोड़ने से निपटने के लिए अनुमति दें।