Les JComponents ne s'affichent pas avec l'arrière-plan de l'image
Vous êtes confronté à un problème où vos JComponents sont invisibles sur une image d'arrière-plan. Cela est probablement dû à une utilisation incorrecte de JPanel et JLabel pour le rendu d'image.
Utilisation de JPanel pour le rendu d'image
Dans votre code, vous ajoutez une image à a JPanel :
mainp.add(picLabel, c);
Bien que cela semble correct, il ne peut dessiner que l'image elle-même, pas ses composants. Pour afficher les composants tout en conservant l'image de fond, vous devez le dessiner directement sur un JPanel personnalisé comme suit :
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); } }
Ensuite, vous pouvez ajouter vos composants à ce JPanel personnalisé :
CustomJPanel customPanel = new CustomJPanel(ImageIO.read(new File("bgd.png"))); mainp.add(customPanel);
Utiliser JLabel pour le rendu d'image
Vous pouvez également utiliser un JLabel pour rendu des images. Cependant, assurez-vous de définir sa propriété opaque sur true pour afficher correctement les composants :
JLabel picLabel = new JLabel(new ImageIcon(ImageIO.read(new File("bgd.png")))); picLabel.setOpaque(true); mainp.add(picLabel);
Assurez-vous de toujours ajouter vos composants au JPanel principal :
c.gridx = 0; c.gridy = 1; gusername = new JTextField(); picLabel.add(gusername, c);
En suivant ces étapes , vous pouvez vous assurer que vos JComponents apparaissent sur une image d'arrière-plan, que ce soit en utilisant un JPanel personnalisé ou en configurant correctement un JLabel.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!