我正在運行一些在迴轉工作室打印輸出的代碼。我沒有得到打印輸出,所以我用SwingUtilities.invokeLater
現在它工作。我沒有想到這個結果,這是怎麼發生的?我本以爲System.out.println
可以運行在美國東部時間之外。system.out.println是否必須在edt上?
2
A
回答
2
那將是很容易測試(不說,連打字所有的代碼來測試,這是較少的工作,然後在這裏張貼):
import java.awt.EventQueue;
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello world");
System.out.println(EventQueue.isDispatchThread());
}
}
結果
Hello world
false
在控制檯上。
所以,是的,System.out.println
可以在EDT
1
我會想到systemystem.out.println可以在edt之外運行。
的確如此。爲了測試這一點,創建一個線程,您可以在其中放置循環和打印輸出並自己查看:)
0
System.out.println確實在edt之外運行。當您使用迴轉工具運行時,您會將其運行。從理論上講,您應該始終能夠直接從您的代碼塊打印結果。 我建議:
Runnable runnable = new Runnable() {
public void run() {
}
};
SwingUtilities.invokeLater(runnable);
0
之外使用雖然可以,它已經調試之外很少應用。
一個備用輸出的例子是的JOptionPane:
JOptionPane.showMessageDialog(frame/* sets up the message, can also be replaced with null to remove formatting*/,
"Eggs are not supposed to be green."/* this is your main message*/,
"A plain message"/* this is what shows in the title spot (first parameter must not be null)*/,
JOptionPane.PLAIN_MESSAGE/*shows no icon, also replacable with WARNING_MESSAGE, ERROR_MESSAGE, INFORMATION_MESSAGE*/);
都將在同一行,但我把它弄壞了起來這裏格式化 一個行版本:
JOptionPane.showMessageDialog(frame/* sets up the message, can also be replaced with null to remove formatting*/, "Eggs are not supposed to be green."/* this is your main message*/, "A plain message"/* this is what shows in the title spot (first parameter must not be null)*/, JOptionPane.PLAIN_MESSAGE/*shows no icon, also replacable with WARNING_MESSAGE, ERROR_MESSAGE, INFORMATION_MESSAGE*/);
無評論:
JOptionPane.showMessageDialog(frame, "Eggs are not supposed to be green.", "A plain message", JOptionPane.PLAIN_MESSAGE);
有趣的是,蘇斯博士在你的節目中引用。
相關問題
- 1. 是否必須跟隨ELSE
- 2. WriteStream是否必須關閉?
- 3. 是否必須使用SSL?
- 4. UIPageViewController是否必須全屏?
- 5. 是否必須在info.plist中添加NSPhotoLibraryUsageDescription?
- 6. 是否必須存在respondsToSelector方法?
- 7. 是否ORDER BY列必須是索引
- 8. SOAP是否必須是有狀態的?
- 9. 用戶ID是否必須是整數?
- 10. FormsAuthenticationTicket.Name是否必須是唯一的?
- 11. Rails的foreign_key是否必須是整數?
- 12. 我是否必須在每條線上演員?
- 13. 在C#中,我是否必須執行顯式上傳?
- 14. 是否必須在主線程上執行GCD主隊列?
- 15. 我是否必須在FolderBrowserDialog上調用Dispose方法?
- 16. 是否必須在jenkins slave機器上安裝svn?
- 17. 我是否必須在Docker容器上啓用防火牆?
- 18. 是否必須在NodeJS上放置反向代理?
- 19. smartgwt-skins.jar是否必須在服務器上?
- 20. 是否必須在每個字段上使用@observable?
- 21. 是否必須在主線程上調用UIView的-drawRect?
- 22. JAVA應用程序是否必須在JSP上運行?
- 23. UIImageView setHighlightedImage:它是否必須在主線程上?
- 24. 我是否必須在我的MKMapview委託上實現mapView:regionWillChangeAnimated:?
- 25. NSLog在設備上,是否有問題或必須刪除?
- 26. 必須是OpenGL?
- 27. Azure AD上的組織名稱是否必須是唯一的?
- 28. imagepicker是否必須是iPad上的彈出窗口
- 29. servlet上下文參數名稱是否必須是唯一的?
- 30. 參數是否必須匹配案例
還有其他的錯誤。 System.out.println(...)不關心它被調用的線程,只需要在Swing事件線程上調用* Swing *方法調用。 –
nooo System.out.println ...這是所有邪惡的根源,也是醜陋的地獄。您可以在java中至少3個易於安裝的輕量級日誌記錄框架之間進行選擇。 (slf4j,log4j,logback等) –
沒有發佈代碼,你不會得到更好的幫助。 –