> Java > java지도 시간 > 내 Swing 구성 요소가 배경 이미지 뒤에 숨겨져 있는 이유는 무엇이며 어떻게 해결할 수 있습니까?

내 Swing 구성 요소가 배경 이미지 뒤에 숨겨져 있는 이유는 무엇이며 어떻게 해결할 수 있습니까?

Mary-Kate Olsen
풀어 주다: 2024-12-18 17:07:10
원래의
677명이 탐색했습니다.

Why are my Swing components hidden behind a background image, and how can I fix it?

배경 이미지로 구성 요소가 보이지 않음

제공된 코드에서는 배경 이미지가 구성 요소를 오버레이하므로 구성 요소가 보이지 않습니다. 이 문제를 해결하려면 구성 요소를 포함하고 이미지 앞의 위치를 ​​설정하는 JPanel을 추가해야 합니다.

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.*;

public class Login implements ActionListener {
    JTextField gusername;
    JTextField gpassword;
    static String username;
    static String password;

    void logini() throws IOException {
        JFrame window = new JFrame("Login");
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.setSize(300, 250);
        window.setResizable(false);
        window.setVisible(true);

        JPanel mainp = new JPanel(new GridBagLayout());
        GridBagConstraints c = new GridBagConstraints();
        window.add(mainp);

        BufferedImage myPicture = ImageIO.read(new File("c:\bgd.png"));
        JLabel picLabel = new JLabel(new ImageIcon(myPicture));
        picLabel.setPreferredSize(new Dimension(300, 250));
        mainp.add(picLabel, c);

        JPanel componentPanel = new JPanel();
        componentPanel.setOpaque(false);
        c.gridx = 0;
        c.gridy = 1;
        mainp.add(componentPanel, c);

        c.gridx = 0;
        c.gridy = 1;
        gusername = new JTextField();
        gusername.setText("Username");
        componentPanel.add(gusername);

        c.gridx = 0;
        c.gridy = 2;
        gpassword = new JTextField();
        gpassword.setText("password ");
        componentPanel.add(gpassword);

        c.gridx = 0;
        c.gridy = 3;
        JButton login = new JButton("Login");
        componentPanel.add(login);

        login.addActionListener(this);
        login.setActionCommand("ok");
    }

    public void actionPerformed(ActionEvent e) {
        if (e.getActionCommand().equalsIgnoreCase("ok")) {
            try {
                this.username = (gusername.getText());
                this.password = (gpassword.getText());
                System.out.println("0");
            } catch (NumberFormatException ex) {
                System.out.println("ERROR: Could not preform function: 7424");
            }
        }
    }
}
로그인 후 복사

업데이트된 코드에서는 componentPanel이라는 JPanel이 생성되어 기본 패널에 추가됩니다. 이 패널에는 입력 필드와 로그인 버튼이 포함되어 있습니다. 배경 이미지가 보이도록 불투명하게 설정되어 있습니다. 구성요소 패널의 위치는 c.gridy = 1을 사용하여 이미지 앞에 설정되어 구성요소가 배경 이미지 위에 표시되도록 합니다.

위 내용은 내 Swing 구성 요소가 배경 이미지 뒤에 숨겨져 있는 이유는 무엇이며 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿