2016-07-28 8 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); 
    } 
} 

Voraussetzung ist hinzuzufügen: dass jPanel2 ein Hintergrundbild haben muss, und oben auf, dass wir JButton hinzufügen müssen. Das Problem ist jedoch, dass das neu hinzugefügte JButton nicht im angegebenen JPanel erscheint, sondern nur das Hintergrundbild. Fehle ich erfrischen?Wie Hintergrund JPanel hinzufügen und dann eine JButton auf diesem JPanel

Antwort

4

Das Problem ist in PaintComponent, wo Sie nur das Grafikobjekt bitten, das Bild zu zeichnen. Aber Sie sollten die superclass paintComponent-Methode aufrufen, indem Sie super.paintComponent() aufrufen und das Grafikobjekt übergeben, damit alle Komponenten des Panels korrekt angezeigt werden.