2015-04-28 35 views
-1

我有一個創建緩衝圖像的方法,我希望能夠創建一個進度條,然後將其繪製到緩衝圖像上。任何想法如何我可以實現這一點,請嗎?java.awtGraphics上的Java繪製組件

public void paint() { 
     BufferedImage img = new BufferedImage(100, 100, BufferedImage.TYPE_INT_ARGB); 
     Graphics g = img.getGraphics(); 
     JProgressBar pb = new JProgressBar(); 

     //Draw the progress bar on Graphics g ??? 
    } 
+0

好不容易纔回答我的問題,謝謝,pb.paint(G)似乎工作 –

+0

什麼是繪圖組件,而不是放置一個功能組件上的GUI的目的是什麼? –

回答

2

你看起來是一個xy問題,因爲你真的不想在任何繪畫方法中添加或刪除組件。我假設你想把一個JProgressBar放到一個顯示圖像的組件上,爲了做到這一點,創建一個擴展JPanel的類,覆蓋它的paintComponent方法,在該方法覆蓋中繪製你的圖像,並添加你的JProgressBar指向該JPanel(但不在其paint或paintComponent方法中)。

例如

public class MyPanel extends JPanel { 
    private BufferedImage image; 
    private JProgressBar progressBar = new JProgressBar(); 

    public MyPanel() { 
     // get your image here 
     add(progressBar); 
    } 

    public Dimension getPreferredSize() { 
     Dimension size = super.getPreferredSize();; 
     if (image == null) { 
      return size; 
     } else { 
      int w = Math.max(image.getWidth(), size.width); 
      int h = Math.max(image.getHeight(), size.height); 
      return new Dimension(w, h); 
     } 
    } 

    protected void paintComponent(Graphics g) { 
     super.paintComponent(g); 
     if (image != null) { 
      g.drawImage(image, 0, 0, null); 
     } 
    } 

}