Java 如何在JFrame上显示从mysql检索到的图像

Java 如何在JFrame上显示从mysql检索到的图像,java,swing,Java,Swing,我在JFrame上显示从数据库检索的图像时遇到问题。这是我将使用的, try { Class.forName("com.mysql.jdbc.Driver"); Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/studio","root",""); Statement st=co

我在JFrame上显示从数据库检索的图像时遇到问题。这是我将使用的,

     try
               {
               Class.forName("com.mysql.jdbc.Driver");
            Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/studio","root","");  
            Statement st=con.createStatement();   
            ResultSet rs = st.executeQuery( "select  image  from photo_instn where cust_id='2'") ;
            while(rs.next()) 
            {
            byte[] imagedata = rs.getBytes("image") ;
            Image img = Toolkit.getDefaultToolkit().createImage(imagedata);
            ImageIcon icon =new ImageIcon(img);
            JLabel lPhoto = new JLabel(icon) ;
            setLayout(null);                              // BYTES TO IMAGE                                                                      
            System.out.println("Inside");
            System.out.println(lPhoto);
            this.add(lPhoto) ;
            lPhoto.setBounds(200,20,300,400); 
  }
}

此代码没有问题。但图像未显示在帧上。。。
请帮助我解决此问题……

请尝试在之后将
this.setVisible(true)
添加到您的代码中

添加(lPhoto)


1从数据库中检索
字节[]
,就像您在代码中那样

InputStream in = new ByteArrayInputStream(imageInByte);
BufferedImage bImageFromConvert = ImageIO.read(in);
2在JFrame上表示该图像

boolean Graphics.drawImage(Image img, 
                           int x, int y,
                           ImageObserver observer);
另请参见


    • 我们不知道如何使用此代码的上下文

      通常,在GUI中添加/删除组件后,您需要使用:

      panel.revalidate();
      panel.repaint();
      

      请使用代码格式。
      import java.awt.*;
      import java.sql.*;
      
      import javax.swing.*;
      
      public class DisplayImage extends JFrame {
      
      Connection connection = null;
      PreparedStatement statement = null;
      
      ResultSet result;
      
      public DisplayImage() {
          super("Image Display");
          setSize(600, 600);
          connection = getConnection();
          try { // table name:image and second image is field name
              statement = connection
                      .prepareStatement("select image from  image where id = 1");
              result = statement.executeQuery();
      
              byte[] image = null;
              while (result.next()) {
                  image = result.getBytes("image");
      
              }
              Image img = Toolkit.getDefaultToolkit().createImage(image);
              ImageIcon icon = new ImageIcon(img);
              JLabel lPhoto = new JLabel();
              lPhoto.setIcon(icon);
              add(lPhoto);
      
          } catch (SQLException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
          }
      
          setVisible(true);
      }
      
      public Connection getConnection() {
          Connection connection = null;
      
          try {
              Class.forName("com.mysql.jdbc.Driver");
              connection = DriverManager.getConnection(
                      // user name:root and password:blank
                      "jdbc:mysql://localhost:3306/insertRetriveImages", "root",
                      "");
      
          } catch (Exception e) {
              System.out.println("Error Occured While Getting the Connection: - "
                      + e);
          }
          return connection;
      }
      
      public static void main(String[] args) {
          new DisplayImage();
      }
      }
      
       Class.forName("com.mysql.jdbc.Driver");
                  Connection  con= DriverManager.getConnection("jdbc:mysql://localhost:3306/vodafonecare","root","root");
                  PreparedStatement ps=con.prepareStatement("select * from photo");
                  ResultSet rs=ps.executeQuery();
                  if(rs.next()){
                      rs.next();
                       rs.next();
                  Blob b=rs.getBlob(3);
                  byte bt[]=b.getBytes(1,(int)b.length());
                   Image img = Toolkit.getDefaultToolkit().createImage(bt);
                   photoL.setIcon(new ImageIcon(img));