天天看點

《Java數字圖像處理:程式設計技巧與應用實踐》——第3章 基本Swing UI元件與圖像顯示 3.1 JPanel元件與BufferedImage對象的顯示

本節書摘來自華章計算機《java數字圖像處理:程式設計技巧與應用實踐》一書中的第3章,第3.1節,作者 賈志剛,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

上一章介紹了bufferedimageop的一些重要知識,實作了幾個常見的圖像特效,本章介紹如何通過swing ui元件顯示與重新整理圖像。首先會介紹java swing的頂層元件jframe,然後介紹swing中最重要和使用頻率最高的元件jpanel,教會讀者重寫jcomponent中的paintcomponent()方法來實作圖像的顯示,最後會介紹swing元件jbutton捕獲與監聽使用者行為時最重要的actionlistener接口的使用,以及在swing事件派遣線程中重新整理顯示等的技巧,希望可指導讀者在後續的圖像處理實踐中,通過swing ui來實作自己的ui測試類。

本書不是一本專門介紹java swing程式設計的圖書,是以要求讀者對java swing常見元件有基本認識,對swing事件監聽與處理有基本的知識。

本章最主要的目的是實作一個java swing ui,即一個測試架構,來測試第4章到第13章中所有繼承自abstractbufferedimageop抽象類的源代碼,幫助讀者更好地了解所學到的關于圖像處理的知識與内容。

剛接觸swing程式設計的讀者可能對jpanel的了解并不多,常常不清楚如何在jpanel中顯示圖像,而網上的很多教程又是通過jlabel來作為bufferedimage執行個體顯示元件的,這其實不是一種很好的方法,不值得推薦。在jpanel中顯示bufferedimage對象執行個體時,值得推薦的做法應該是通過重載paintcomponent()方法來實作圖像的顯示與及時重新整理。這種方法的大緻實作可以分為以下幾步。

1)重載jpanel中的 paintcomponent()方法。

2)擷取graphics2d圖形引擎繪制對象,使用drawimage方法繪制圖像,代碼如下:

3)使用repaint()方法及時繪制更新。

以上簡單的三步即可實作bufferedimage對象執行個體在jpanel的現實與重新整理。

根據上述方法實作了一個完整的可以顯示與重新整理bufferedimage對象執行個體的imagepanel類,代碼如下: