2016-07-28 3 views
0
//Calling function 
ImagePanel Panel_2 = new ImagePanel(new ImageIcon("C:/Users/kagarwal/Downloads/intacct_logo_standard_web.png").getImage()); 
Panel_2.add(new JButton()); 
Panel_2.revalidate(); 


//Called function 
public class ImagePanel extends JPanel { 

private Image img; 

    public ImagePanel(String img) { 
    this(new ImageIcon(img).getImage()); 
    } 

    public ImagePanel(Image img) { 
    this.img = img; 
    Dimension size = new Dimension(img.getWidth(null), img.getHeight(null)); 
    setPreferredSize(size); 
    setMinimumSize(size); 
    setMaximumSize(size); 
    setSize(size); 
    setLayout(null); 
    } 

    public void paintComponent(Graphics g) { 
    g.drawImage(img, 0, 0, null); 
    } 
} 

Exigence est: que jPanel2 a besoin d'avoir une image de fond, et en plus de cela, nous devons ajouter JButton. Mais, question ici est que le JButton nouvellement ajouté n'apparaît pas dans le JPanel donné, il montre seulement l'image de fond. Suis-je manquer rafraîchir?Comment ajouter arrière-plan JPanel puis ajouter un JButton sur cette JPanel

Répondre

4

Le problème est dans paintComponent, où vous demandez uniquement à l'objet graphique de dessiner l'image. Mais vous devriez appeler la méthode paintComponent de la superclasse en appelant super.paintComponent() en passant l'objet graphique, afin que tous les composants du panneau soient correctement affichés.