Java課程設計的圖片瀏覽器的原代碼_第1頁
Java課程設計的圖片瀏覽器的原代碼_第2頁
Java課程設計的圖片瀏覽器的原代碼_第3頁
Java課程設計的圖片瀏覽器的原代碼_第4頁
Java課程設計的圖片瀏覽器的原代碼_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、.課程設計的任務及要求任務:圖形化界面(GUI)編程,編寫一個圖片瀏覽器程序1.1可以單張打開圖片1.2可以將同一目錄下的圖片按縮略圖打開1.3按“上一張” “下一張”按鈕可以顯示相應圖片二. 需求分析圖形化界面(GUI)編程,編寫一個圖片瀏覽器程序可以支持“ “.GIF”,“.JPEG',“.jpeg ”,“.TGA',“.JPG”,“.jpg ”等格式,單張打開圖片,可 以將同一目錄下的圖片按縮略圖打開按“上一張”“下一張”按鈕可以顯示相應圖片。運行Applet時,圖像不是一氣呵成的,因為方法不是吧圖像完整的裝入 內(nèi)存再顯示的。于此相反,方法創(chuàng)建一個線程,該線程與Apple

2、t的原有線程并發(fā)執(zhí)行,一邊裝入一邊顯示,從而產(chǎn)生上了不聯(lián)需顯示的現(xiàn)象。為了提高圖像才顯示效果,可以采用雙緩沖技術:首先把圖像裝入內(nèi)存,然后再顯示在屏幕上。三. 設計思路3.1界面設計選擇圖片按鈕:主要用dir函數(shù)實現(xiàn)圖片的遍歷。 上一張,下一張:通過做標軸回調(diào)函數(shù)實現(xiàn)。由于本軟件為單機軟件,不需要大量的數(shù)據(jù)讀寫和數(shù)據(jù)交換,實現(xiàn)上、下 功能要求只能讀取PictureBox控件當前加載的目錄,讀取當前路徑,創(chuàng)建一維 數(shù)組。frame = n ewFrame( "Pictureviewer");Panel pb = n ewPa nel();Button select =newB

3、utton("選擇圖片");previous = newButton("上張");next = newButton("下一張”);select.addActionListener(this );previous .addActionListener(this );3.2.圖像加載:Applet常用來顯示儲存在文件中的圖像,多數(shù)Applet使用的是GIF或JPEG 格式的圖像文件。需Applet加載圖像只需首先定義Image對象,然后使用getlmage()方法把圖像和文件結合起來即可。image_width = bi.getWidth(this

4、);image_height = bi.getHeight(this);double image_proporti on = 1.0 * image_height / image_width;System.out.pri ntl n("image:w "+image_width+",h"+image_height+" ,p1 "+image_proportion);if(image_proporti on > scree n_ proportio n) image_height = scree n_height; image_w

5、idth = (i nt)(image_height / image_proportio n); System.out.pri ntl n(” p1>p0 w= "+image_width); else image_width = scree n_width; image_height = (in t)(image_width * image_proporti on); System.out.pri ntln (” p0>p1 h= "+image_height); 四. 詳細設計4.1.程序設計流程圖42源程序代碼package C;import java.i

6、o.File;import java.io.File nameFilter;public class MyFilter impleme nts File nameFilterprivate Strin g exte nsion;public MyFilter()extension= newString".jpg",".JPG", ".gif",".GIF",".png", ".PNG",".jpeg", ".JPEG"public My

7、Filter(Stri ng exte nsio n)this.exte nsion = exte nsion;public boolea n accept(File dir,Stri ng n ame)for(Stri ng s : exte nsion)if(n ame.e ndsWith(s)return true;return false;package C;import java.awt.*;import java.awt.eve nt.*;import java.awt.image.*;public class MyCa nvas exte nds Can vas impleme

8、nts Comp onen tListe ner /*/private static fin al l ong serialVersi on UID = 1L;private Bufferedlmage bi;private Image im;private int image_width;private int image_height;public void setImage(BufferedImage bi)this.bi = bi;this.zoom();public void pai nt(Graphics g) g.drawlmage(im,(this.getWidth()-ima

9、ge_width)/2,(this.getHeight()-imag e_height)/2,this);_ public void comp onen tResized(Comp onen tEve nt e)if(bi != null)System.out.pri ntln ("resize!");this.zoom();this.repai nt();public void comp onen tMoved(Comp onen tEve nt e)public void comp onen tShow n( Comp onen tEve nt e)public voi

10、d componentHidden(ComponentEvent e)public void zoom()if(bi = n ull)return;int scree n_width = this.getWidth();int scree n_height = this.getHeight();double scree n_proporti on = 1.0 * scree n_height / scree n_width;System.out.pri ntl n("scree n:w"+scree n_width+",h"+scree n_height

11、+" ,p0 "+scree n_proporti on);image_width = bi.getWidth(this);image_height = bi.getHeight(this);double image_proporti on = 1.0 * image_height / image_width;System.out.pri ntl n("image:w "+image_width+",h"+image_height+" ,p1 "+image_proporti on);if(image_propor

12、ti on > scree n_proportio n)image_height = scree n_height;image_width = (i nt)(image_height / image_proportio n);System.out.pri ntl n(” p1>p0 w= "+image_width);elseimage_width = scree n_width;image_height = (in t)(image_width * image_proporti on);System.out.pri ntln (” p0>p1 h= "+

13、image_height); _im=bi.getScaledl nsta nce(image_width,image_height,lmage.SCALE_SMOOTH); 一package C;import java.awt*;import java.awt.event.*;import java.awt.image.*;import java.io.*;import javax.imageio.*;public class T implements ActionListenerprivateFrameframe;privateMyCa nvas mc;privateStri ngfpat

14、h ;privateStri ngfn ame;privateFilefiles ;privateint findex ;private FileDialog fd_load ;private MyFilter filter ;private Butt on previous ;private Butt on n ext ;public static void main( String args) throws Exception n ewT().i ni t();public void in it()frame = n ewFrame( "Pictureviewer");

15、Panel pb =n ewPa nel();Button select =newButton("選擇圖片");previous = newButton("上張");next = newButton("下一張”);select.addActionListener(this );previous .addActionListener(this );next .addActionListener(this );pb.add(select);pb.add( previous );pb.add(n ext);mc= n ewMyCa nvas();mc

16、setBackground( newColor(200,210,230);mcaddComponentListener( m();frame.add(pb, "North");frame .add( mc "Center");frame .setSize(360,360);frame .setLocati on (400,200);frame .addWindowListener( newWindowAdapter()public void windowClosing(WindowEvent e)System. exit (0););frame.setV

17、isible( true );this .validateButton();filter = newMyFilter();fdoad = newFileDialog(frame,"打開文件 ”,FileDialog.LOADfdoad .setFilenameFilter( filter ); _public void action Performed(Acti on Eve nt e)Stri ng comma nd = e.getActio nComma nd();if (command.equals(” 選擇圖片")fdoad .setVisible( true );

18、fpath = fdoad .getDirectory();fname = fd_load .getFile();if (fpath != null ) && ( fname != null )this .display( newFile( fpath + fname);files = newFile( fpath ).listFiles( filter ); this .setIndex(); else if (command.equals(” 上一張")findex -;if (findex <0)fin dex = 0;this .display( fil

19、es findex ); else if (command.equals(” 下一張")fin dex +;if (findex >= files . length )findex = files . length -1;this .display( files findex );this .validateButton();public void display(File f)try BufferedImage bi = ImageIO. read (f);mcsetImage(bi);frame .setTitle( "PictureViewer - "

20、+ f.getName() +""); catch (Exception e)e.pri ntStackTrace();mcrepai nt();public void set In dex()File current =newFile( fpath + fname);if (files != null )for (int i=0;i< files . length ;i+)if (current.equals(files i)fin dex = i;public void validateButton()previous .setEnabled( files !=

21、null ) && ( findex > 0);next .setEnabled( files != null ) && ( findex <(files . length -1); 五. 運行調(diào)試與分析討論5.1.將同一目錄下的圖片按縮略圖打開52單張打開圖片t l.-. -1 Pictu reViewer - 9799_to p.jpg<邂塹自上一張I下一張i53按”上一張”,”下一張”按鈕打開圖片匸|回迭擇圖片1上一張11 三j PictureVieer - sjpg六. 設計體會與小結我通過這次編程實踐學習到了 Image和Griphics相關的類的使用。首先我通過網(wǎng)上搜集資料和自己看 jdk api 對Image、graphics、swin

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論