2014-11-16 2 views
0
public class main extends JFrame { 
    JPanel panel = new JPanel(); 
    JButton playGame = new JButton("PLAY GAME"); 
    public void paint(java.awt.Graphics g) { 
     super.paint(g); 
     BufferedImage image = null; 
     try { 
      image = ImageIO.read(new File("./src/Images/menu.jpg")); 
     } catch (IOException e) { 

      e.printStackTrace(); 
     } 
     g.drawImage(image, 0, 0, 1000, 600, this); 
    } 

    public main(){ 
     super(); 

     playGame.setBounds(390, 250, 220, 30); 
     //panel.setBounds(80, 800, 200, 100); 
     panel.setLayout(null); 
     panel.add(playGame); 
     add(panel); 

     setTitle("MENU"); 
     setSize(1000,600); 
     setLocationRelativeTo(null); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setResizable(false); 
     //setLayout(new FlowLayout()); 
     setVisible(true); 
    } 

    public static void main(String[] args) { 
     new main(); 
} 
} 

이미지 위에 내 JButton을 추가하려고하는데 이미지 뒤에 표시됩니다.JButton 배경 이미지 뒤에

문제는 그림의 맨 위에 단추가 나타나도록 배경 그림을 추가하는 방법을 모르겠다는 것입니다. 나에게 배경 화면을 설정하여 다른 패널도 상단에 표시되도록 할 수 있습니까?

+0

'panel.setLayout을 Java GUI는 다른 OS, 화면 크기, 화면 해상도 등에서 작동해야합니다. 따라서 픽셀 완벽한 레이아웃에 도움이되지 않습니다. 대신 레이아웃 관리자 또는 [조합] (http://stackoverflow.com/a/5630271/418556)과 [공백] 레이아웃 채우기 및 테두리 (http://stackoverflow.com/a/17874718/)를 사용하십시오. 418556). –

답변

0

클래스를 컴파일 한 후 bin 폴더에 만들어지기 때문에 패널에 배경 이미지를 추가하고 src 폴더에서 이미지를로드하지 않도록하십시오. 따라서 class.getResource()를 사용하면 상대 URL을 제공하므로 영상; 또 다른 한가지는 당신이 JFrame의에 그림이 프레임 국경도 적용되기 때문에 JFrame의 페인트 메소드를 오버라이드 (override)하지 않기 때문에 JPanel의 클래스의 paintComponent 메소드 오버라이드 (override)하여 프레임 내부 패널에 페인트 항상 시도 안 : (

import java.awt.image.BufferedImage; 
import java.io.IOException; 

import javax.imageio.ImageIO; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 

public class main extends JFrame 
{ 
    JButton playGame = new JButton("PLAY GAME"); 
    JPanel panel = new JPanel() 
    { 
     public void paintComponent(java.awt.Graphics g) 
     { 
      super.paintComponent(g); 
      BufferedImage image = null; 
      try 
      { 
       image = ImageIO.read(main.class.getResource("/Images/menu.jpg")); 
      } 
      catch (IOException e) 
      { 

       e.printStackTrace(); 
      } 
      g.drawImage(image, 0, 0, 1000, 600, this); 
     } 
    }; 

    public main() 
    { 
     super(); 

     playGame.setBounds(390, 250, 220, 30); 
     // panel.setBounds(80, 800, 200, 100); 
     panel.setLayout(null); 
     panel.add(playGame); 
     add(panel); 

     setTitle("MENU"); 
     setSize(1000, 600); 
     setLocationRelativeTo(null); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setResizable(false); 
     // setLayout(new FlowLayout()); 
     setVisible(true); 
    } 

    public static void main(String[] args) 
    { 
     new main(); 
    } 
} 
관련 문제