2013-03-24 117 views
0

剛開始使用Java並且是初學者。我試圖創建一個照片查看器,可以搜索圖像的目錄並打開圖像,但我的程序不會顯示圖像。圖像將不會顯示在JPanel上

當我運行程序,它打開了,並表示這是我用來搜索我的目錄菜單欄,但即使我選擇的圖像也不會顯示。 TIA。

import java.awt.*; 
import java.awt.event.*; 
import java.awt.image.BufferedImage; 
import java.io.*; 
import javax.swing.*; 
import javax.swing.event.*; 
import javax.swing.filechooser.FileNameExtensionFilter; 
import javax.imageio.ImageIO; 

public class ICS 
{ 
private JPanel gui; 
private JFileChooser fileChooser; 
FilenameFilter fileNameFilter; 
private JMenuBar menuBar; 
DefaultListModel model; 
public ICS() { 
    gui = new JPanel(new GridLayout()); 

    final JLabel imageView = new JLabel(); 
    gui.add(imageView); 

    fileChooser = new JFileChooser(); 
    String[] imageTypes = ImageIO.getReaderFileSuffixes(); 

    menuBar = new JMenuBar(); 
    JMenu menu = new JMenu("GET PHOTO HERE"); 
    menuBar.add(menu); 
    JMenuItem browse = new JMenuItem("browse"); 
    menu.add(browse); 

    browse.addActionListener(new ActionListener(){ 
      public void actionPerformed(ActionEvent ae) { 
       int result = fileChooser.showOpenDialog(gui); 
       if (result==JFileChooser.APPROVE_OPTION) { 
        File eg = fileChooser.getSelectedFile(); 
       } 
      } 
     }); 
} 

public void loadImages(File directory) throws IOException { 
    File[] imageFiles = directory.listFiles(fileNameFilter); 
    BufferedImage[] images = new BufferedImage[imageFiles.length]; 
} 

public Container getGui() { 
    return gui; 
} 

public JMenuBar getMenuBar() { 
    return menuBar; 
} 

public static void main(String[] args) { 
    SwingUtilities.invokeLater(new Runnable(){ 
      public void run() { 
       ICS imageList = new ICS(); 

       JFrame f = new JFrame("Image Browser"); 
       f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
       f.add(imageList.getGui()); 
       f.setJMenuBar(imageList.getMenuBar()); 
       f.setLocationByPlatform(true); 
       f.pack(); 
       f.setSize(800,600); 
       f.setVisible(true); 
      } 
     }); 
} 

}

回答

2

你沒有做你選擇的文件進行任何操作。鑑於您在JPanel有一個空JLabel,你可以簡單地設置Icon該組件:

imageView.setIcon(new ImageIcon(eg.getPath())); 
+0

是否有我需要添加的特定位置? – user2205330 2013-03-24 20:42:23

+0

雖然乍一看這似乎是正確的,我就從只是說:「這是它是如何做」,並讓他學會自己思考,不會犯同樣的錯誤,至少讓公衆知道他做錯了解釋避免再次。 – SevenBits 2013-03-24 20:42:43

+0

在檢索您選擇的文件之後立即進入動作偵聽器,就像我說的回答。 – SevenBits 2013-03-24 20:43:43

0

它沒有做任何事情與形象,因爲你從來沒有告訴它。在你的動作監聽器中,你創建了一個文件選擇器並獲得了選定的文件,但是你從來不會對它做任何事情。您只需將其定義爲動作偵聽器中的局部變量,然後在偵聽器退出時立即銷燬它。

你應該是做什麼的,你的動作偵聽器內,進行函數調用您檢索文件選擇的用戶後實際顯示圖像。

此外,ICS是一類可怕的名字。當你的程序變大時,你應該描述你的類名作爲自己的參考和理智,並且你試圖記住一切都做了什麼。