簡體   English   中英

在按鈕單擊事件中使用無限循環

[英]using infinite loop in a button click event

如果我在按鈕單擊事件中使用無限循環,是否有任何已知問題? 實際上,首先我通過從 GUI 中獲取設置來設置程序。 然后當我點擊開始按鈕時,我想要一個 function 被連續調用。 function 不是 GUI 的一部分。 這是程序剩余部分的 function。

是的,您的 GUI 將停止響應。

您應該啟動一個工作線程來代替進行計算。 推薦閱讀:

你可以這樣做,但是在一個單獨的線程中,否則你會阻塞 UI 線程並且應用程序將被卡住並強制關閉。

是的:GUI 將完全被凍結。 您必須在后台線程中執行長時間運行的任務。 這通常使用SwingWorker來完成。 查看Swing 教程以了解如何使用它們。

問題是在 AWT 事件調度線程 (EDT) 中調用了您的事件處理程序(此處為 ActionListener)。

該線程與處理所有用戶交互以及重繪應用程序的線程相同。 如果您沒有盡快從動作偵聽器返回,您的應用程序將看起來凍結。

不要那樣做,而是使用一個新線程。 (對於 GUI 更新,使用 EventQueue.invokeLater(或 SwingUtilities.invokeLater,這是相同的)回調 EDT。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM