2012-06-03 1 views
-1

Я сохраняю изображение и другие данные посетителя в таблице tbl_visitor. Код выглядит следующим образом,Как присвоить изображение блоба JLabel

String string_op="F:\\POSTERS\\Roses\\TROPIC4.png"; 
    File imageFile = new File(string_op); 
    FileInputStream fis = new FileInputStream(imageFile); 

    String queryVis="insert into tbl_visitor(visitor_name,contact_no," + 
      "job_profile,org_name,photo_id_proof,type_of_visitor,date," + 
      "extra_people,image) values('"+ 
      name_of_visitor.getText()+"','"+ 
      contact_num.getText()+"','"+ 
      job_profile.getText()+"','"+ 
      org.getText()+"','"+ 
      photo_id_num.getText()+"','"+ 
      type_of_visitor.getSelectedItem().toString()+"','"+ 
      date_and_time.getText()+"','"+ 
      tf1.getText()+"','"+ 
      "fis,(int)imageFile.length()"+"')"; 

теперь я хочу, чтобы отобразить изображение на JFrame и отображать изображения утра с помощью JLabel , но я не могу назначить изображение в JLabel. Я попробовал следующий код для отображения изображения, но он дал мне ошибку.

Blob image_vis = rs1.getBlob(10); 
image_cap.setIcon(image_vis); 

Пожалуйста, помогите мне.

+0

ну, тип параметра метода SetIcon должен иметь тип ImageIcon. Поэтому я попробую включить Blob в ImageIcon. Не 100% уверены, что это сработает, потому что я не знаком с классом Blob. – Travis

+0

Одна строка кода> 400 символов шириной?!? У вас должен быть ** очень широкий монитор. Ради остальной части нас, пожалуйста, принудийте разрывы строк до того, как SO представит полосу прокрутки. –

+0

Спасибо, Андрей за редактирование. – Anjali

ответ

2

Это довольно просто, если вам потребуется некоторое время, чтобы прочитать API документ:

Blob имеет getBinaryStream(), который возвращает поток байтов, содержащих данные, хранящиеся в сгустка.

ImageIcon, который реализует Icon, имеет constructor, который принимает байтовый массив в качестве аргумента.

JLabel имеет метод setIcon(Icon).

Итак, прочитайте все из бинарного потока Blob в массив байтов, постройте ImageIcon, используя этот массив байтов, и вызовите метод labelIcon с этим ImageIcon как аргумент.

+0

Спасибо за решение. Можете ли вы, пожалуйста, уточнить эти утверждения путем кодирования? Заранее спасибо. – Anjali

+0

Я не буду делать все для вас, нет. Google для «Java IO tutorial», чтобы понять, как читать из потока ввода в массив байтов, или использовать Guava для этого. Остальное - три строки кода. –

+0

T пробовал этот код, но не отображает imageBlob image_vis = rs1.getBlob (10); ObjectInputStream ois = null; ois = new ObjectInputStream (image_vis.getBinaryStream()); ImageIcon image = (ImageIcon) ois.readObject(); – Anjali