2016-03-27 17 views
-1

yüklenemedi Yüklenici içinde aradığım bir yöntem kullanılarak veritabanından seçtiğim BLOB otomatik yükleme sorunları yaşıyorum. Başka şey (bu güncelleme, resim ekleme) oturum kullanıcı başına görüntülerin otomatik alınmasıyla dışında iyi çalışıyorJLabel Görüntü Simgesi Yer tutucu her zaman kurucuda 0 değerini döndürür. Blob

Hata:.

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Width (0) and height (0) must be non-zero 
    at java.awt.image.ReplicateScaleFilter.<init>(ReplicateScaleFilter.java:102) 
    at java.awt.image.AreaAveragingScaleFilter.<init>(AreaAveragingScaleFilter.java:77) 

Benim Yöntem tanımı,

private void loadProfilePic(){ 
     String SQL = "SELECT PROFILE_PIC from allusers_profile_picture WHERE USERID =?"; 
     try(Connection con = DBUtil.getConnection(DBType.MYSQL); 
      PreparedStatement ps = con.prepareStatement(SQL);) 
     { 
      ps.setInt(1,userId); 
      try(ResultSet rs = ps.executeQuery();){ 
       JOptionPane.showMessageDialog(null,profilePicJlbl.getWidth()+" "+profilePicJlbl.getHeight()); 
       if(rs.next()){ 
        byte[] img = rs.getBytes("PROFILE_PIC"); 
        ImageIcon myImageIcon = new ImageIcon(img); 
        Image image = myImageIcon.getImage(); 
        Image myImage = image.getScaledInstance 
         (profilePicJlbl.getWidth(), profilePicJlbl.getHeight(),Image.SCALE_SMOOTH); 
        ImageIcon finalImage = new ImageIcon(myImage); 
        profilePicJlbl.setIcon(finalImage); 
       } 
      } //--end of inner try 
     } catch (SQLException e) { 
      JOptionPane.showMessageDialog(null,"Error: "+e.getMessage()); 
     } //--end of catch 
    }//--end of method 

Sonra onu kurucunun içine derim.

public home(int uId,String uname,String uType) { 
     loadProfilePic(); 
} 

Ben 0 döndürür neden herhangi bir nedenle düşünemiyorum Ama render kadar JLabel genişliği ve yüksekliği 0 olduğunu okumuştum.

enter image description here

Bunu nasıl çözebilir? Sadece profil resmini yüklemek için kullanıcının ayrı bir düğmeye basmasını istemiyorum. Otomatik olmalı.

Şimdiden teşekkürler.

+0

Evet, bileşenin genişliği ve yüksekliği, oluşturulmadan önce 0'dır. Oluşturmadan önce etiketin genişliğini neden alıyorsunuz? Niçin buna ihtiyacın var? Bu gereksinimden kurtulmak bir çözümdür. –

+0

@HovercraftFullOfEels Cevabınız için teşekkür ederiz. Profil paneli oluşturulduğunda blob veritabanından seçebilmem gerekiyor. Hangi alternatifi veya seçenekleri önerebilirsiniz? – p3ace

+0

Daha iyi yardım için, daha önce bir [MCVE] veya [Kısa, Kendini İçeren, Doğru Örnek] (http://www.sscce.org/) gönderin. –

cevap

0

İşaretli tesise getPreferredSize().width yöntemiyle erişebilirsiniz. getWidth döner Hovercraft tarafından belirtildiği gibi 0.

görüntülenmiyorsa JLabel, neden Kullanıcının görüntü için istediğiniz boyutu kurmak için sürekli kullanmıyorsun?

İlgili konular