2013-05-31 38 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对象该目录。