2013-04-17 3 views
0

내 배경 이미지 인 이미지를 그릴 수 있지만 모든 JButton을 프레임에 추가하려고 할 때 전체 비즈니스가 잘못되어 그린 그림이 사라지고 원본 배경이 보입니다. .배경 이미지 그리기

그림 그리기는 다음과 같습니다

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

내가, 내 문제는 페인트 방법으로 뭔가 생각 나는 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

이 (가) 편집되었으므로 답이 이해가되지만 내 문제의 주된 원인이 아닌 것 같습니다. –