1
我知道如何實際將元素添加到JList本身,但我不確定如何在更新實際發生時使我的事件日誌(使用JList和DefaultListModel)更新。看起來好像我的應用程序凍結了,然後當結束時顯示所有條目。請幫忙?如何添加來自另一個JPanel/JFrame/etc的String JList元素?
我知道如何實際將元素添加到JList本身,但我不確定如何在更新實際發生時使我的事件日誌(使用JList和DefaultListModel)更新。看起來好像我的應用程序凍結了,然後當結束時顯示所有條目。請幫忙?如何添加來自另一個JPanel/JFrame/etc的String JList元素?
我100%肯定你有一個Swing併發問題,你將Swing事件調度線程或EDT與長時間運行的進程綁定在一起。問題是Swing偶數線程負責執行所有Swing繪圖和用戶交互。如果它與一些長時間運行的進程(如文件或數據庫輸入或輸出)捆綁在一起,那麼它不能執行其職責,並且整個GUI變得凍結。解決方案是使用後臺線程(如SwingWorker),以便長時間運行的進程不會捆綁EDT,但需要注意更新Swing組件,例如JList或其型號爲的EDT。
請查看Swing concurrency tutorial瞭解有關該問題及其解決方案的更多詳細信息。
你以前是否是槍手? ;] +1 – user1329572 2012-07-07 21:24:04
@ user1329572:對不起! – 2012-07-07 21:24:30
我的程序中有多線程。它正在每個線程上進行文件轉換。如果我想要在每個線程完成時更新日誌,我是否需要擁有與線程一樣多的SwingWorkers? – snotyak 2012-07-07 21:28:33