第一次寫博客,不喜勿噴。
最近一個小師弟問我怎么用Java做圖片瀏覽器,感覺好久沒玩Java了,就自己動手做了一下。
學校的教程是用Swing來做界面的,所以這里也用這個來講。
首先要做個大概的界面出來,eclipse有一個很好用的插件叫做WindowBuilder,可以可視化編輯界面,自動幫你生成代碼。
界面如下:
可能有些同學不知道圖片該怎么弄出來,其實很簡單。
創建一個JLabel,然后里面不要寫字。JLabel有一個icon的屬性,照片就放在這里面。
這里要注意的是,WindowBuilder生成的界面代碼一般是放在構造方法里面的,里面的變量都是局部變量。而這個JLabel要設置為全局變量,因為之后的圖片切換要用到這個變量。
1 Img = new JLabel(""); 2 Img.setIcon(new ImageIcon(" 這里寫照片的地址 ")); 3 Img.setBounds(14, 13, 404, 257); 4 contentPane.add(Img);
因為時間有限,沒有做圖片自適應。這里貼一個圖片自適應的教程。
然后我們只需要更換圖片的地址,就能讓JLabel顯示不同的圖片,實現圖片瀏覽器的功能。
首先我們可以給之前做好的“open”按鈕添加一個點擊事件,點擊后可以調用JFileChooser來瀏覽本地的文件,獲取到選中的文件地址,然后存入ImgList保存。
1 public void actionPerformed(ActionEvent e) { 2 //初始化文件選擇器 3 JFileChooser jfc=new JFileChooser(); 4 jfc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES ); 5 //彈出選擇文件的界面 6 jfc.showDialog(new JLabel(), "選擇"); 7 File file=jfc.getSelectedFile(); 8 //pasePath是一個分析文件的方法,主要是用於判斷讀取到的是文件夾還是文件,並將其中的圖片類型的文件地址存到ImgList中。 9 pasePath(file.getAbsolutePath()); 10 //最后顯示讀取到的第一張圖片。 11 if(imglist.size()>0) { 12 String[] list = (String[])imglist.get(0); 13 Img.setIcon(new ImageIcon(list[0])); 14 } 15 }
//分析文件的方法 public void pasePath(String path) { imglist.clear();//清理掉之前的圖片地址。 File file = new File(path); //如果是文件,就分析文件的后綴名是不是jpg或者png,如果是就存進imglist。 if (!file.isDirectory()) { String absolutepath=file.getAbsolutePath(); String name=file.getName(); String[] list = new String[] {absolutepath,name}; String[] strArray = file.getName().split("\\."); System.out.println(strArray[strArray.length-1]); if(strArray[strArray.length-1].equals("jpg")||strArray[strArray.length-1].equals("png")) { imglist.add(list); } //如果不是文件,就存是文件夾,按上一個if語句內的寫法,逐個分析文件夾內的文件。區別就是這個存進去的圖片地址可能有很多個。 } else if (file.isDirectory()) { System.out.println("文件夾"); String[] filelist = file.list(); for (int i = 0; i < filelist.length; i++) { File readfile = new File(path + "\\" + filelist[i]); if (!readfile.isDirectory()) { String absolutepath=readfile.getAbsolutePath(); String name=readfile.getName(); String[] list = new String[] {absolutepath,name}; String[] strArray = readfile.getName().split("\\."); System.out.println(strArray[strArray.length-1]); if(strArray[strArray.length-1].equals("jpg")||strArray[strArray.length-1].equals("png")) { imglist.add(list); } } } } }
到這里,我們已經可以讀取到文件夾內的圖片了。然后我們要給“上一個”,“下一個”按鈕添加事件,在點擊的時候切換圖片。
其實就是很簡單的一個判斷語句,這是“上一個”按鈕的判斷語句。
如果imglist的大小大於0,說明列表內有東西。然后判斷,如果現在讀取的這個照片是0,那么肯定就沒有上一個了,就讀取最后一張照片。
我在這里用了一個全局變量 nowindex 表示當前讀取到的圖片,然后根據這個進行加減或賦值就可以進行切換了。
判斷后重新設置圖片的地址,就可以實現切換圖片了。
“下一個”的事件就反過來做就行了。
if(imglist.size()>0) { if(nowindex==0) { nowindex=imglist.size()-1; }else { nowindex = nowindex-1; } String[] list = (String[])imglist.get(nowindex); Img.setIcon(new ImageIcon(list[0])); }
最后的運行結果:
感謝閱讀~