有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java无法在JPanel上显示图像

以下是我的代码片段:

PreparedStatement ps = con.prepareStatement("select * from patrika where jantacode = ?");
                    ps.setString(1, jComboBox1.getItemAt(jComboBox1.getSelectedIndex()));
                    ResultSet rs = ps.executeQuery();
                    rs.next();
                    jTextField2.setText(rs.getString("companycode"));
                    jTextField3.setText(rs.getString("manufacturer"));
                    jTextField4.setText(rs.getString("purchaseprice"));
                    jTextField5.setText(rs.getString("wholesaleprice"));
                    jTextField6.setText(rs.getString("retailprice"));
                    jTextField7.setText(rs.getString("location"));
                    jTextField1.setText(rs.getString("stock"));

                    //Getting and displaying image
                    Blob blob = rs.getBlob("image");
                    int blobLength = (int) blob.length();  
                    byte[] bytes = blob.getBytes(1, blobLength);
                    blob.free();
                    BufferedImage img = ImageIO.read(new ByteArrayInputStream(bytes));
                    Graphics2D g = img.createGraphics();
                    jPanel1.paint(g);
                    jPanel1.repaint();

一切都很好,但jPanel无法在其上绘制图像

同样的快照也被附加。谁能帮我找出我的错误吗

Problem Screenshot


共 (1) 个答案

  1. # 1 楼答案

    如果希望将图像绘制到JPanel,则必须重写其paintComponent()方法,因为您希望在每一帧绘制图像

    从文档中可以看到如下内容:

    public void paintComponent(Graphics g) {
        // Let UI Delegate paint first, which 
        // includes background filling since 
        // this component is opaque.
    
        super.paintComponent(g);       
        g.drawString("This is my custom Panel!",10,20);
        redSquare.paintSquare(g);
    }
    

    现在加载图像并仅在面板上绘制一次

    多花点时间处理文档:) 这会很好:https://docs.oracle.com/javase/tutorial/uiswing/painting/index.html