2013-05-31 212 views
0

我在一個項目中,我需要在一個JFrame顯示圖像的工作。這些圖像是動態下載的,需要存儲在jar文件之外。我如何從計算機的文件系統顯示圖像(使用Jlabel)?將圖片添加到一個JLabel

+0

用戶將如何知道圖像的路徑,將通過文件選擇器對話框向用戶詢問 – anshulkatta

+0

圖像將被存儲在已知文件夾中,下載圖像後,java程序應該加載圖像並顯示它。 –

+0

所以路徑是已知的程序或任意?是否知道該圖像將在「c:\\ image」或其他文件夾中下載 – anshulkatta

回答

1

假設圖像存儲在文件夾中說,「形象」或任何位置。我假設你在src(源文件夾)內有一個圖像文件夾,儘管你可以將它改變到你想要的任何位置。

/* 
URL logoUrl = this.getClass().getResource("/images/login_icon.png"); // you can change this location 
Toolkit tk1 = this.getToolkit(); 
logo = tk1.getImage(logoUrl); 
*/ 
// use above code if the image lies within your jar file 
// otherwise use below code for images stored in path like C:\User\Desktop .. 

ImageIcon image = new ImageIcon("C:\\Users\\Public\\Pictures\\Desert.jpg");  
jLabel2.setIcon(image); // where jLabel2 is your label 

這將工作!

+0

我在看到您的評論後編輯了我的代碼。如果你想在'src'文件夾中使用圖片,你可以使用以前的代碼。否則,對於像C:\ Users \ MyPics \ image1.jpg之類的位置存儲的圖像,則使用更新的2行代碼。 – kunal18

0

如果你在一個已知的文件夾中有圖片試試這個代碼

public class ShowPic extends JFrame{ 
    private JLabel lblDisplay = new JLabel(new ImageIcon("im.jpg")); 
    public ShowPic() 
    { 
     JPanel pan1 = new JPanel(new BorderLayout(450,450)); 
     pan1.add(lblDisplay , BorderLayout.CENTER); 
     add(pan1, BorderLayout.CENTER); 
    } 

    public static void main(String[] args) { 
    JFrame frame = new ShowPic(); 
    frame.setSize(500, 500); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setVisible(true); 
    } 

,那麼你可以得到相似圖片

List<String> filename=new ArrayList<String>(); 
File aFile = new File("C:\\image"); 
if(aFile.isDirectory()) 
{ 
      filename=Arrays.asList(aFile.listFiles()); 
} 

List<JLabel> lb=new ArrayList<JLabel>(); 
for(int i=0;i<filename.size();i++) 
{ 

    lblDisplay = new JLabel(new ImageIcon("c:\\image"+filename.get(i))); 

    lb.add(lblDisplay); 

} 

磅每文件引用各自具有的JLabel的ArrayList中˚F對象該目錄。