>Java >java지도 시간 >Java에서 배경 이미지를 사용할 때 내 JComponent가 보이지 않는 이유는 무엇입니까?

Java에서 배경 이미지를 사용할 때 내 JComponent가 보이지 않는 이유는 무엇입니까?

DDD
DDD원래의
2024-12-21 01:21:10188검색

Why Are My JComponents Invisible When Using a Background Image in Java?

JComponents가 그림 배경과 함께 표시되지 않음

JComponents가 배경 이미지에 비해 보이지 않는 문제에 직면해 있습니다. 이는 이미지 렌더링에 JPanel 및 JLabel을 잘못 사용했기 때문일 수 있습니다.

이미지 렌더링에 JPanel 사용

코드에서 a JPanel:

mainp.add(picLabel, c);

올바른 것처럼 보이지만 이미지 자체가 아닌 이미지 자체만 그릴 수 있습니다. 구성 요소. 배경 이미지도 유지하면서 구성 요소를 표시하려면 다음과 같이 사용자 정의 JPanel에 직접 그려야 합니다.

public class CustomJPanel extends JPanel {

    private BufferedImage image;

    public CustomJPanel(BufferedImage image) {
        this.image = image;
    }

    @Override
    public Dimension getPreferredSize() {
        return (new Dimension(image.getWidth(), image.getHeight()));
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.drawImage(image, 0, 0, this);
    }
}

그런 다음 이 사용자 정의 JPanel에 구성 요소를 추가할 수 있습니다.

CustomJPanel customPanel = new CustomJPanel(ImageIO.read(new File("bgd.png")));
mainp.add(customPanel);

이미지 렌더링에 JLabel 사용

또는 이미지 렌더링을 위해 JLabel을 사용할 수 있습니다. 그러나 구성 요소를 올바르게 표시하려면 불투명 속성을 true로 설정해야 합니다.

JLabel picLabel = new JLabel(new ImageIcon(ImageIO.read(new File("bgd.png"))));
picLabel.setOpaque(true);
mainp.add(picLabel);

기본 JPanel에 구성 요소를 계속 추가해야 합니다.

c.gridx = 0;
c.gridy = 1;
gusername = new JTextField();
picLabel.add(gusername, c);

다음 단계를 수행하세요. 을 사용하면 사용자 정의 JPanel을 사용하든 JLabel을 올바르게 구성하든 JComponent가 배경 이미지에 표시되는지 확인할 수 있습니다.

위 내용은 Java에서 배경 이미지를 사용할 때 내 JComponent가 보이지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.