2015-06-27 83 views
1

我的桌面Java應用程序的JPanel的重畫有JMenuBar的幾個JMenuitems,並且它的下面是一個JPanel,我被點擊下拉菜單中的項目時,重新渲染。懸停/點擊的JMenuItem

它所有的工作不錯,但我的JPanel重新渲染(我重寫的paintComponent被調用),當我將鼠標懸停或點擊我的JMenuitems。

這是一個問題,因爲在JPanel的是編程構成圖象(隨機種子),以及施工需要一段時間,所以,如果我將鼠標懸停在菜單太多我的程序掛起..

這是爲什麼我該如何解決它?

編輯:即使我播種隨機值,並得到相同的圖像,該方案確實太多不必要的計算,它變得緩慢。

回答

3

…(我重寫paintComponent被調用),當我將鼠標懸停或點擊我的JMenuitems。這是一個問題,…這是爲什麼…

它是預期的行爲。該工具包將重新繪製一個面板每當它確定需要這樣做:EG的

  • 一個菜單出現或消失在它
  • 另一個窗口或對話框DIS /出現在它
  • 調整窗口的大小的用戶…

…上JPanel以編程構造圖像(隨機接種),和建築需要一段時間,…

爲了避免必須重新創建複雜的塗料,畫出細節到BufferedImage然後要麼在塗料的方法,或(簡單)在標籤顯示它繪製圖像。

+1

謝謝,使它與BufferedImage所需的工作。 – Nirri