2010-09-16 99 views
4

我的應用程序在啓動時不會自行繪製。調整大小或最小化/最大化時,應用程序的窗口被繪製。Java Window繪製問題

此問題只出現在Windows機器上(我測試過XP,Vista和Windows 7)。在Mac OS X和Linux上,應用程序工作正常。

機器安裝了java 6.我的應用程序使用AWT,所以不是Swing。我嘗試使用Swing(所以JFrame代替Frame),但這並不能解決問題。

我檢查了幀的repaint(),update()和paint()的調用。它們全部出現,並且可以繪製圖像。我還檢查了這些調用是否在EDT線程上完成。情況就是這樣。當窗口被調整大小(或最小/最大值)時,paint()上的調用由系統完成,並且圖像被繪製。

我的恐懼是我錯過了一些非常明顯的東西。我使框架可見,驗證它(也用無效測試)並重繪它。這在Mac OS X和Linux中已經足夠了。

有人對我應該做什麼有什麼建議,或者還有其他的嘗試嗎?

Thanx提前

莫里斯

+4

如何粘貼一些源代碼? – pstanton 2010-09-16 23:15:04

+3

借調 - 這聽起來像你很徹底,但如果你可以簡化你的源代碼到一個非常基本的例子,仍然存在同樣的問題,併發布在這裏,這肯定會有所幫助。 – 2010-09-16 23:54:58

回答

1

我的猜測是,你要重寫Frame.paint。從繪畫到JPanel(或Canvas,如果堅持過時的AWT),您可能會獲得更好的結果,並且當您這樣做時,確保您重寫了JPanel的paintComponent而不是繪畫。在某些情況下,帶有ImageIcon的JLabel可以更簡單。

但是,正如其他人所建議的,儘量發佈測試用例。

0

很難在沒有看到任何源代碼的情況下診斷問題,但圖像是否完全加載?

AWT在後臺加載圖像後,即使對Toolkit.getImage()的調用可能會返回有效的Image實例,但這並不意味着該圖像在該時間加載。您可以使用MediaTracker來跟蹤此情況。