मैं लंबे समय तक डाउनलोड होने पर अपने फ्रेम के निचले बाएं कोने में एक अनिश्चित जेपी प्रोग्रेसबार एनिमेट करना चाहता हूं।बेसिक इंडेटर्मिनेट जेपी प्रोग्रेस बार उपयोग
मैंने कई ट्यूटोरियल देखे हैं, जिनमें से कोई भी मुझे स्पष्ट नहीं है। पृष्ठभूमि में फ़ाइल डाउनलोड होने पर मैं बस इसे एनिमेट करना चाहता हूं। प्रत्येक तरीके से मैंने कोशिश की है, यह के बाद प्रगति पट्टी को एनिमेट नहीं करता है डाउनलोड डाउनलोड हो जाता है।
मुझे यह जानने में मदद चाहिए कि मेरा डाउनलोड() कॉल कहां रखा जाए।
class MyFunClass extends JFrame {
JProgressBar progressBar = new JProgressBar();
public void buttonClicked() {
progressBar.setVisible(true);
progressBar.setIndeterminate(true);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
progressBar.setIndeterminate(true);
progressBar.setVisible(true);
// Do I do my download() in here??
}});
// Do download() here???
progressBar.setVisible(false);
}
}
अग्रिम धन्यवाद!
समाधान
संपादित करें: जो लोग भविष्य में मेरे लिए एक समान मुद्दा है के लिए, यह एक बुनियादी समस्या के लिए बुनियादी उपाय है। यह मेरा कोड शब्दशः नहीं है, लेकिन एक सामान्य स्केच है। buttonClicked()
के अंदर:
public void buttonClicked() {
class MyWorker extends SwingWorker(String, Object) {
protected String doInBackground() {
progressBar.setVisible(true);
progressBar.setIndeterminate(true);
// Do my downloading code
return "Done."
}
protected void done() {
progressBar.setVisible(false)
}
}
new MyWorker().execute();
}
आप http://docs.oracle.com/javase/tutorial/uiswing/components/progress.html पर एक नज़र भले ही यह जटिल लगता लेना चाहिए। आपको क्या करना है एक और थ्रेड (पृष्ठभूमि कार्यकर्ता) में डाउनलोड चलाएं। फिर मुख्य (gui) धागा प्रगतिबार एनीमेशन करता है। जिस तरह से आप इसे कर रहे हैं वास्तव में दूसरी तरफ है। – user845279
कृपया कुछ समस्याएं ठीक करने के लिए मेरे उत्तर में ** संपादित करें ** ** देखें। –