我有兩個線程,每個線程都有自己的功能:一個處理從套接字讀取輸入,另一個是與 GUI 相關的線程(使用 JavaFX)。讀取線程包含對創建 GUI 線程的 Runnable 對象的引用。當讀取線程接收到某個類型的對象時,它會從 GUI 線程調用一個方法。這個方法應該創建一個新的 Button 標記有一些通過套接字接收到的文本。但是,然后嘗試實例化一個新的 Button,我收到以下異常:Exception in thread "Thread-4" java.lang.IllegalStateException: Not on FX application thread; currentThread = Thread-4.我提到當我嘗試更新現有組件時一切正常,并且不再拋出此異常,因此我得出結論,對象創建是觸發異常的原因。是否可以從不同的線程(如上所述)命令類的實例化?如果沒有,是否有任何解決方法可以達到相同的結果?
1 回答

慕碼人8056858
TA貢獻1803條經驗 獲得超6個贊
這可能已經被問過一千次了,并且是 JavaFX 編程的一個基本方面。必須從應用程序線程向 GUI 添加(而不是創建)控件。因此,如果您想從某個其他線程啟動它,您必須將您的呼叫包裝到一個Platform.runLater()
呼叫中。
添加回答
舉報
0/150
提交
取消