簡體   English   中英

JPanels,偵聽器和線程

[英]JPanels, Listeners and Threads

對於一個學校項目,我正在用JAVA編寫BlackJack紙牌游戲。

在程序中執行了幾步后,我的整個計算機系統減速/停頓,並且JFrame中的某些區域變為黑色。 似乎沒有粉刷。

我將用語言給您一些程序細節,而不是提交代碼。

我對幾乎每個GUI組件都做了一些擴展,以使其具有我想要的外觀。 我使用的JComponent的幾乎每個子級都將其paintComponent重寫為具有自定義圖像背景和適用的抗鋸齒功能。

在我的(自定義)JFrame中,我加載了JPanel的擴展版本。 該面板包含該屏幕的所有GUI組件。 當我想切換屏幕(轉到程序的其他部分)時,我切換到了JPanel的另一個擴展版本。 我通過從JFrame刪除所有元素並添加新面板來做到這一點。 這些不同的面板實現了ActionListeners和FocusListeners。

在這一點上,我的想法傾向於線程處理問題。 我目前的理論是這樣的:當構造一個面板以在JFrame中顯示(每個程序在程序的不同階段)時,以前構造的面板並沒有真正地被“銷毀”,並且這些面板的偵聽器保持活動狀態。

我對你們的問題是,這個理論是否成立……在那種情況下,是否有辦法“殺死”這些面板或至少停止收聽?

如果我的理論沒有道理,還有哪些其他原因可能導致這些症狀? 可能是paintComponent方法的廣泛覆蓋嗎?

任何想法都將被高度推薦!

問候威爾科

當構造一個面板顯示在JFrame中(每個程序在程序的不同階段)時,以前構造的面板並沒有真正地被“銷毀”,並且這些面板的偵聽器保持活動狀態。

否。事件僅分派給具有焦點的組件。 它的組成部分沒有焦點,則不會接收系統生成的事件,例如KeyEvents和MouseEvents。 因此,如果面板不可見,則不會接收事件。

我切換到JPanel的另一個擴展版本。 我通過從JFrame刪除所有元素並添加新面板來做到這一點。

這不是最好的設計。 最好使用為此目的設計的卡片布局

我使用的JComponent的幾乎每個子級都將其paintComponent重寫為帶有自定義圖像背景和適用的抗鋸齒功能

然后,您的自定義繪畫可能會出現問題。 當您僅使用標准組件而不進行自定義繪畫時會發生什么?

暫無
暫無

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

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