對於一個學校項目,我正在用JAVA編寫一個BlackJack紙牌遊戲。JPanels,聽衆和線程
經過程序中的幾個步驟後,我的整個計算機系統變慢/斷斷續續,並且JFrame中的一些區域變黑。似乎不會發生重新粉刷。
我會用單詞給你一些程序細節,而不是提交代碼。
我已經做了幾乎每個GUI組件的廣泛擴展,以使它具有我想要的外觀和感覺。幾乎我使用的JComponent的每個孩子都會在適用的情況下將其paintComponent重寫爲自定義圖像背景和消除鋸齒。
在我的(自定義)JFrame中加載JPanel的擴展版本。該面板包含該屏幕的所有GUI組件。當我想切換屏幕(轉到程序的另一部分)時,我切換到JPanel的另一個擴展版本。我通過從JFrame中刪除所有元素並添加新面板來做到這一點。這些不同的面板實現了ActionListener和FocusListener。
在這一點上,我的想法傾向於一個線程處理問題。我目前的理論是這樣的:當一個面板被構建爲在JFrame中顯示時(每個面板在te程序中的不同階段),先前構建的面板不會被「銷燬」,並且這些面板的監聽器保持活動狀態。
我對你們的問題是,這個理論是否存在......在這種情況下,有沒有辦法'殺死'這些面板或至少停止聽力?
如果我的理論沒有意義,還有什麼可能導致這些症狀?它可能是paintComponent方法的廣泛覆蓋?
任何想法將高度appriciated!
問候威爾科
沒有看到代碼,我真的懷疑任何人都可以幫助你。有一件事 - 我不明白爲什麼要從舊的JPanel中刪除所有組件 - 這不是必需的。你內存不足了嗎?你描述的行爲聽起來像你可能。 – Kaffiene 2011-02-28 02:42:01