2011-12-04 5 views
-2

가능한 중복이 하나
Using an image for the background of a JPanel and JButton배경 이미지 자바 스윙

비슷한 질문을하기 전에 물어왔다,하지만이 약간 다릅니다. 스윙에서 JPanel/JFrame의 Background를 설정하는 방법을 아는 사람이 있는지 알고 싶습니다. 결국이 이미지 위에 버튼과 텍스트 필드를 배치해야합니다. 지금까지 모든 솔루션은 GridLayout 등을 사용할 때 작동하지 않는 JPanel에 이미지를 추가했습니다.

+0

@Matthew Kemnetz I 투표도 – mKorbel

+0

을 중복으로이 질문을 닫는 @AndrewThompson 그래, 난 않았다. 나는 당신이 거기에 링크 한 것처럼 그것을 구현했습니다. 문제는 단추를 오버레이 할 수있는 배경을 만드는 대신 프레임에 이미지를 추가하는 것입니다. –

+0

@AndrewThompson @AndrewThompson 질문을 삭제할 것이지만 어떻게 [this] (http : //stackoverflow.com/questions/2960279/add-other-components-to-jframe-with-background) 프레임의 배경이되도록 ... –

답변

-1

주어진 이미지를 배경으로 페인트하여 상속하여 사용자 정의 JPanel을 만들 수 있습니다. 여기에 코드가 있습니다. 다음은 예입니다

public class ImagePanel extends JPanel { 
    private Image img; 

    public ImagePanel(String img) { 
    this(new ImageIcon(img).getImage()); 
    } 

    public ImagePanel(Image img) { 
    this.img = img; 
    Dimension size = new Dimension(img.getWidth(null), img.getHeight(null)); 
    setPreferredSize(size); 
    setMinimumSize(size); 
    setMaximumSize(size); 
    setSize(size); 
    setLayout(null); 
    } 

    public void paintComponent(Graphics g) { 
    g.drawImage(img, 0, 0, null); 
    } 
} 
+3

이 코드를 사용하면 이미지가 패널을 채우지 않고 내용이 채워지지 않습니다. BTW 1)'ImagePanel'에'Image'가 필요한 경우 생성자에 대한 인수로'Image'를 지정하고'String' 인수 (광산에 대한 애안함)로 p * ssing을 중단하십시오. 2) 크기 (기본/최대/최소)는 레이아웃에 의해 적용되거나 적용되지 않을 수있는 제안 일뿐입니다. 3) JPanel은 ImageObserver를 구현하므로 getWidth (ImageObserver) 또는 getHeight (ImageObserver)의 인수로 사용할 수 있습니다. 경험이없는 주제에 대한 답변을 추가하기 전에 더 많은 답글을 읽는 것을 고려하십시오. –

+0

@AndrewThompson +1 교육적 기분 :-) – kleopatra

+2

@AndrewThompson 정보를 제공해 주셔서 감사합니다. 내 실수를 설명하기 위해 +1. – Jomoos