Heim > Java > javaLernprogramm > Warum sind meine JComponents unsichtbar, wenn ich in Java ein Hintergrundbild verwende?

Warum sind meine JComponents unsichtbar, wenn ich in Java ein Hintergrundbild verwende?

DDD
Freigeben: 2024-12-21 01:21:10
Original
187 Leute haben es durchsucht

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

JComponents werden nicht mit Bildhintergrund angezeigt

Sie stehen vor einem Problem, bei dem Ihre JComponents vor einem Hintergrundbild unsichtbar sind. Dies liegt wahrscheinlich an der falschen Verwendung von JPanel und JLabel für die Bildwiedergabe.

Verwendung von JPanel für die Bildwiedergabe

In Ihrem Code fügen Sie ein Bild hinzu ein JPanel:

mainp.add(picLabel, c);
Nach dem Login kopieren

Obwohl dies korrekt erscheint, kann es nur das Bild selbst zeichnen, nicht seine Komponenten. Um die Komponenten anzuzeigen und gleichzeitig das Hintergrundbild beizubehalten, sollten Sie es wie folgt direkt auf einem benutzerdefinierten JPanel zeichnen:

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);
    }
}
Nach dem Login kopieren

Dann können Sie Ihre Komponenten zu diesem benutzerdefinierten JPanel hinzufügen:

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

JLabel für die Bildwiedergabe verwenden

Alternativ können Sie ein JLabel für die Bildwiedergabe verwenden. Stellen Sie jedoch sicher, dass Sie die opaque-Eigenschaft auf true setzen, um die Komponenten korrekt anzuzeigen:

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

Stellen Sie sicher, dass Sie Ihre Komponenten weiterhin zum Haupt-JPanel hinzufügen:

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

Indem Sie diese Schritte befolgen können Sie sicherstellen, dass Ihre JComponents vor einem Hintergrundbild angezeigt werden, unabhängig davon, ob Sie ein benutzerdefiniertes JPanel verwenden oder ein JLabel korrekt konfigurieren.

Das obige ist der detaillierte Inhalt vonWarum sind meine JComponents unsichtbar, wenn ich in Java ein Hintergrundbild verwende?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage