Rumah > Java > javaTutorial > Mengapa JComponent Saya Tidak Kelihatan Apabila Menggunakan Imej Latar Belakang di Java?

Mengapa JComponent Saya Tidak Kelihatan Apabila Menggunakan Imej Latar Belakang di Java?

DDD
Lepaskan: 2024-12-21 01:21:10
asal
187 orang telah melayarinya

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

JComponents Tidak Muncul Dengan Latar Belakang Gambar

Anda menghadapi isu di mana JComponents anda tidak kelihatan pada imej latar belakang. Ini mungkin disebabkan oleh penggunaan JPanel dan JLabel yang salah untuk pemaparan imej.

Menggunakan JPanel untuk Penyampaian Imej

Dalam kod anda, anda menambah imej pada a JPanel:

mainp.add(picLabel, c);
Salin selepas log masuk

Walaupun ini kelihatan betul, ia hanya boleh melukis imej itu sendiri, bukan imejnya komponen. Untuk memaparkan komponen sambil mengekalkan imej latar belakang, anda harus melukisnya terus pada JPanel tersuai seperti berikut:

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);
    }
}
Salin selepas log masuk

Kemudian, anda boleh menambah komponen anda pada JPanel tersuai ini:

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

Menggunakan JLabel untuk Rendering Imej

Sebagai alternatif, anda boleh menggunakan JLabel untuk rendering imej. Walau bagaimanapun, pastikan anda menetapkan sifat legapnya kepada benar untuk memaparkan komponen dengan betul:

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

Pastikan anda masih menambah komponen anda pada JPanel utama:

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

Dengan mengikuti langkah ini , anda boleh memastikan bahawa JComponents anda muncul pada imej latar belakang, sama ada menggunakan JPanel tersuai atau mengkonfigurasi JLabel dengan betul.

Atas ialah kandungan terperinci Mengapa JComponent Saya Tidak Kelihatan Apabila Menggunakan Imej Latar Belakang di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan