2012-02-23 33 views
0

我想要做的是將已經緩衝的圖像繪製到JFrame上。在一個小程序中繪製緩衝圖像

JFrame p1=new JFrame(); 
p1.getContentPane(); 
p1.setSize(new Dimension(h,w)); 
p1.setVisible(true); 
p1.update(bufferedImage.getGraphics()); 

這是迄今爲止的代碼。 bufferedImage是一個緩衝圖像,但此代碼僅打開JFrame並且不繪製圖像。我以前從未使用過圖形。由於

回答

1

看到這個工作代碼:

public static void main(String[] args) throws Exception { 
    BufferedImage buf=null; 
    try { 
     buf = ImageIO.read(new File("estbest.jpg")); 
    } catch (Exception e) { 
     System.out.println(e.getMessage()); 
    } 
    new ImageFrame(buf, "Input Image "); 
} 

ImageFrame類別:

public class ImageFrame extends JFrame { 
    BufferedImage image; 

    public ImageFrame(final BufferedImage image) { 
     this(image, "No Title"); 
    } 

    public ImageFrame(final BufferedImage image, final String title) { 
     this.image = image; 
     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       if (image != null) { 
        setSize(image.getWidth(null), image.getHeight(null)); 
       } else { 
        setSize(250, 90); 
       } 
       setTitle(title); 
       setVisible(true); 
       repaint(); 
      } 
     }); 
    } 

    public void paint(Graphics g) { 
     if (image == null) { 
      g.setColor(Color.BLACK); 
      g.fillRect(0, 0, 250, 90); 
      System.out.println("image null"); 
      g.setFont(new Font("Arial", Font.BOLD, 24)); 
      g.setColor(Color.RED); 
      g.drawString("Invalid or No Image", 10, 50); 
     } else { 
      g.drawImage(image, 0, 0, null); 
     } 
    } 
} 

來源:Java: Loading images in JFrame - Reusable ImageFrame