我在a.java類(表單中)有一個progressbar。我需要從b.java類到達它。 我的進度條名稱是jprog。(我把它放在palet的表格中) 如何設置公開我的進度條?我無法在屬性頁面中找到它。 我的progressbarr在第一類。但我想改變它的價值在二等。 謝謝。我怎樣才能達到不同班級的進度條?
1
A
回答
1
考慮在第二堂課中增加一個PropertyChangeListener
到您的第一堂課並且使用SwingWorker
。 SwingWorker有一個名爲setProgress()
的方法,您可以調用它來設置進度條的值。然後,您可以重寫propertyChange()
方法在頭等艙和做這樣的事情:
public void propertyChange(PropertyChangeEvent evt) {
if ("progress" == evt.getPropertyName()) {
int progress = (Integer) evt.getNewValue();
progressBar.setValue(progress);
}
}
使用幾個類,ClassA的和ClassB的可以如下的例子:
public ClassA extends JForm implements PropertyChangeListener{
private JProgressBar progressBar;
public ClassA(){
/**
* Your setup for the form
*/
}
/**
* Invoked when task's progress property changes.
*/
public void propertyChange(PropertyChangeEvent evt) {
if ("progress" == evt.getPropertyName()) {
int progress = (Integer) evt.getNewValue();
progressBar.setValue(progress);
}
}
public void someMethod(){
ClassB classB = new ClassB();
classB.addPropertyChangeListener(this);
classB.execute();
}
}
class ClassB extends SwingWorker<Void, Void> {
/*
* Main task. Executed in background thread.
*/
@Override
public Void doInBackground() {
Random random = new Random();
int progress = 0;
//Initialize progress property.
setProgress(0);
//Sleep for at least one second to simulate "startup".
try {
Thread.sleep(1000 + random.nextInt(2000));
} catch (InterruptedException ignore) {}
while (progress < 100) {
//Sleep for up to one second.
try {
Thread.sleep(random.nextInt(1000));
} catch (InterruptedException ignore) {}
//Make random progress.
progress += random.nextInt(10);
setProgress(Math.min(progress, 100));
}
return null;
}
}
1
您可以添加到您的類方法,將更新進度欄。然後你不必直接觸摸進度條。
+0
的更新我不明白你mean.pleas explan是 –
+0
你能解釋事件指派線程的上下文中執行的操作是很重要的? –
0
如果你想更新進度條,而你需要通過按下ClassA上的按鈕來完成它,我仍然建議Sujay的解決方案,但是你需要使用Runnable上下文來調用你的方法。爲了避免可能會阻止進度
public void someMethod(){
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
// Some stuff
classB.addPropertyChangeListener(this);
classB.execute();
}
});
}
相關問題
- 1. 我怎樣才能填寫另一個班的班級屬性?
- 2. 我怎樣才能找出我的班級從哪個班級繼承?
- 3. 我怎樣才能讓jsonp和我的班級一起玩呢?
- 4. 我怎樣才能變出一個班?
- 5. 我怎樣才能要求班級類型的內部類?
- 6. 我怎樣才能使用Android的進度條
- 7. 我怎樣才能達到radiobuttonlist?
- 8. 我怎樣才能達到風效?
- 9. 我怎樣才能打電話給另一個班級
- 10. 我怎樣才能達到一定的浮點精度?
- 11. 我怎樣才能讓一個班級加入我的繪畫功能?
- 12. 我怎樣才能達到這個搜索條件?
- 13. 我怎樣才能得到
- 14. 我怎樣才能得到
- 15. 我怎樣才能把兩種不同的梯度性
- 16. 我怎樣才能居中不同寬度的僞元素?
- 17. 我怎樣才能
- 18. 我怎樣才能
- 19. 我怎樣才能
- 20. 我怎樣才能
- 21. 我怎樣才能達到像這樣的懸停效果?
- 22. 我怎樣才能一起gnumakefile條件?
- 23. 我怎樣才能做多個條件?
- 24. 我怎樣才能改變搜索條
- 25. 我怎樣才能在相同的ListView
- 26. 我怎樣才能在Java中使用同一個對象在不同的班級
- 27. 我怎樣才能到我的用戶
- 28. 我怎樣才能進去界限
- 29. 我怎樣才能得到最近的不同事件?
- 30. 導航欄在調整大小時更改高度。我怎樣才能使它達到同樣的高度?
我的progressbarr在第一類。但我想改變它的價值在二等 –
@ErsinGulbahar:我更新了我的答案,展示瞭如何實現這一目標。請注意,我的'ClassA'是一個包含'JProgressBar'的值,我想根據特定的條件從另一個'ClassB'類更新它的值。希望這有助於:) – Sujay
@Sujay我試過在我的代碼中使用這種方式,但不同之處在於classB.execute();當我按下ClassA的按鈕時會被調用。該按鈕保持切換直到我的任務完成,最後progressBar立即達到100%。我的問題是什麼? – dervish