如何將消息從工作線程傳遞到java中的GUI?我知道在Android中這可以通過處理程序和消息類來實現。但是我想要Java中的同樣的東西,任何人都可以幫助我。 在此先感謝。 Ranganath.tm如何將消息從工作線程傳遞到java中的GUI
0
A
回答
2
我認爲最好的方法是使用EventBus & MVP設計爲您的GUI組件。 「工作線程」通過將事件發送到公共汽車來觸發事件,並且針對特定類型的事件的處理程序的演示者被通知它。
這樣設計的尼斯描述可以在這裏找到: Is there a recommended way to use the Observer pattern in MVP using GWT?
...雖然問題是關於GWT的答案是適用於根據MVP設計的所有應用程序。
3
您必須使用SwingUtilities.invokeLater
,因爲Swing組件只能從事件派發線程訪問。
這個方法的javadoc有一個鏈接到關於線程的Swing教程。點擊此鏈接。
下面是一個例子:
public class SwingWithThread {
private JLabel label;
// ...
public void startBackgroundThread() {
Runnable r = new Runnable() {
@Override
public void run() {
try {
// simulate some background work
Thread.sleep(5000L);
}
catch (InterruptedException e) {
// ignore
}
// update the label IN THE EDT!
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
label.setText("Background thread has stopped");
}
});
};
};
new Thread(r).start();
}
}
1
發送事件。見this tutorial
0
您可以使用SwingWorker類,它旨在解決這種情況下: http://download.oracle.com/javase/tutorial/uiswing/concurrency/worker.html
1
我們像這樣做對的FrostWire,通過這一實用功能,我們可以檢查是否可運行/線程您正在使用的已從GUI線程調用
/**
* InvokesLater if not already in the dispatch thread.
*/
public static void safeInvokeLater(Runnable runnable) {
if (EventQueue.isDispatchThread()) {
runnable.run();
} else {
SwingUtilities.invokeLater(runnable);
}
}
相關問題
- 1. 將消息傳遞給Java中的asynchronus工作線程J2ME
- 2. 將消息從DLL傳遞到GUI
- 3. 如何將消息傳遞給線程
- 4. 從工作非gui線程發送消息到主窗口
- 5. 在Java中,如何將對象從工作線程傳遞迴主線程?
- 6. Java多線程消息傳遞
- 7. 如何將數據(結構)作爲消息傳遞給線程。
- 8. 「PostMessage」從一個工作線程發送消息到主GUI線程
- 9. WPF將異常消息從ThreadPool線程傳遞到UI
- 10. 如何將單個事件從線程傳遞到GUI窗體線程?
- 11. Android:正確的方式將消息從後臺線程傳遞到UI線程?
- 12. Android中的多線程:消息傳遞
- 13. 如何將對象從主線程傳遞到java中的另一個線程
- 14. 如何將消息從DLL傳遞到應用程序
- 15. 將操作中的消息從struts2傳遞到JSP
- 16. 發送消息到Windows GUI線程
- 17. 線程間消息傳遞的實現
- 18. 傳遞給多個線程的消息
- 19. Java客戶端服務器編程:如何將消息從服務器傳遞到所有客戶端線程?
- 20. VB網絡 - 將數據從線程傳遞到主GUI
- 21. C#如何將對象從工作線程傳遞迴主線程?
- 22. 如何在Java GUI中將消息打印到屏幕上?
- 23. 如何將信息從一個工作傳遞到另一個工作
- 24. Android中的Google雲消息傳遞服務如何工作?
- 25. 多線程C++消息傳遞
- 26. Android線程和消息傳遞
- 27. Haskell,通道,STM,線程,消息傳遞
- 28. 如何從工作線程/類更新GUI線程/類?
- 29. 即時消息傳遞 - Java上的單連接或多線程
- 30. Win32 GUI應用程序:如何將stderr消息導入到消息箱中
哪個GUI庫的含義?它有所作爲。 –