2013-04-17 232 views
0

我畫了一幅圖片,這是我的背景圖片,一切都很好,但是當我試圖向圖片中添加一些JButton時,整個業務出錯了。我畫的圖片消失了,我看到原始背景。繪製背景圖片

圖像繪製看起來像這樣:

public void paint(Graphics g){ 
    g.drawImage(bg, 0, 0, null); 
} 

我想我的問題是,一些與paint方法,需要指出的是,我在擴展JFrame類。

編輯: 這裏有一些圖片來演示我的意思。

它先畫我的形象: enter image description here

當我移動鼠標到我的按鈕應該是德魯的地方,這就是我得到: enter image description here

回答

2

enter image description here

import java.awt.*; 
import java.awt.image.BufferedImage; 
import javax.swing.*; 
import javax.swing.border.EmptyBorder; 
import java.net.URL; 
import javax.imageio.ImageIO; 

public class FrameWithBG { 

    public static void main(String[] args) throws Exception { 
     URL url = new URL("http://i.stack.imgur.com/OVOg3.jpg"); 
     final BufferedImage bg = ImageIO.read(url); 
     Runnable r = new Runnable() { 

      @Override 
      public void run() { 
       JPanel c = new PanelWithBackgroundImage(bg); 
       c.setLayout(new GridLayout(0,5,16,16)); 
       c.setBorder(new EmptyBorder(10, 10, 10, 10)); 
       for (int ii = 1; ii < 26; ii++) { 
        c.add(new JButton("Button " + ii)); 
       } 
       JFrame f = new JFrame(c.getClass().getSimpleName()); 

       f.add(c); 
       f.pack(); 
       f.setVisible(true); 
      } 
     }; 
     // Swing GUIs should be created and updated on the EDT 
     // http://docs.oracle.com/javase/tutorial/uiswing/concurrency/initial.html 
     SwingUtilities.invokeLater(r); 
    } 
} 

class PanelWithBackgroundImage extends JPanel { 

    Image bg; 

    PanelWithBackgroundImage(Image bg) { 
     this.bg = bg; 
    } 

    @Override 
    public void paintComponent(Graphics g) { 
     super.paintComponent(g); 
     g.drawImage(bg, 0, 0, getWidth(), getHeight(), this); 
    } 
} 
+0

我試了一下,它畫了我的BG圖片,然後我的按鈕,它回到了灰色的默認背景顏色 –

+1

爲了更快地獲得更好的幫助,請發佈[SSCCE](http:// sscc e.org/)。 –

+0

編輯,順便說一句你的答案確實有道理,但它似乎不是我的問題的主要原因。 –