2013-05-31 4 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); 

} 

фунты Список_массивы F объектов JLabel, каждый из которых в ссылку на файл в каталог.

Смежные вопросы