Comment mettre une image de fond dans un Composite

bonjour, je suis en utilisant un Composite comme mon conteneur de mon image) alors j'ai vraiment envie d'utiliser une image de fond dans mon Panneau, j'ai vraiment besoin d'aide c'est mon code jusqu'à présent . c'est le jour s'il vous plaît vérifier ici est mon code maintenant

 import java.awt.*;
import javax.swing.*;
import java.awt.event.*;


public class imagebut extends JFrame
{

public static void main(String args [])
{
    imagebut w = new imagebut();
    w.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    w.setSize(300,300);
    w.setVisible(true);

}
public imagebut()
{   

    setLayout(null); //:-)
    PicPanel mainPanel = new PicPanel("picturename.jpg");
    mainPanel.setBounds(0,0,500,500);
    add(mainPanel);


}

class PicPanel extends JPanel{

    private BufferedImage image;
    private int w,h;
    public PicPanel(String fname){

        //reads the image
        try {
            image = ImageIO.read(new File(fname));
            w = image.getWidth();
            h = image.getHeight();

        } catch (IOException ioe) {
            System.out.println("Could not read in the pic");
            //System.exit(0);
        }

    }

    public Dimension getPreferredSize() {
        return new Dimension(w,h);
    }
    //this will draw the image
    public void paintComponent(Graphics g){
        super.paintComponent(g);
        g.drawImage(image,0,0,this);
    }
}

}
  • D'où vient picturename.jpg résident? Vous ne pouvez pas simplement copier et coller le code et espérer qu'il fonctionne, vous allez avoir besoin de faire quelques modifications afin qu'il réponde à vos besoins
  • j'ai créer picturename.jpg ensuite, j'ai mis à l'intérieur de mon dossier src
  • ImageIO.read(new File(fname)) est à la recherche d'un fichier dans le répertoire courant où le programme a été exécuté, vous avez intégré l'image comme une ressource incorporée, ils doivent être chargés de manière différente. Essayez d'utiliser quelque chose comme ImageIO.read(getClass().getResource("/picturename.jpg")) à la place (en supposant que picturename.jpg est à la racine de src). Aussi, n'utilisez pas de null mises en page, ils vont revenir pour laisser des marques de dents dans votre arrière
  • que dois-je utiliser si au lieu de null ?
  • Pour le (nouveau) exemple vous avez collé, se débarrasser de setLayout(null);, se débarrasser de mainPanel.setBounds(0,0,500,500); et add(mainPanel); et simplement utiliser setContentPane(mainPanel)
  • je suis désolé, je suis au début de ce semi-finition, je suis étudiant de 20 minutes et je n'ai pas eu encore . je ne sais pas les autres comme mainPanel . mais j'ai vraiment besoin d'apprendre à ce sujet, veuillez me donner un exemple de programme en cours d'exécution avec une image d'arrière-plan du panneau, puis je vais vérifier le code jusqu'à ce que je obtenir les flux de
  • Il y a 6 exemples dans ma réponse...pas sûr de ce que je peux faire...Vous devriez aussi jeter un oeil à la Exécution de la Peinture Custom ou tout simplement utiliser un JLabel qui est aussi exampled dans ma réponse...pas vraiment sûr de ce que vous voulez me faire...
  • sir dans JLabel sir-je besoin de le mettre à mon Image ?
  • même si j'ai ajouter mon image dans un panneau ? exemple de trame.getContentPane().add(panneau);
  • Dans un rond-point chemin, comme l'exemple dans ma question montre, vous pouvez simplement placer l'étiquette que le volet contenu de l'image, réglage de la cadres de gestionnaire de mise en page et de continuer à ajouter du contenu directement à l'image que la normale
  • Rappelez-vous aussi, de nombreux Swing composants sont opaques...
  • attendez quelques instant, monsieur, je vais essayer de le faire et je vais le mettre à jour pour vous
  • JLabel fond = new JLabel(new ImageIcon(ImageIO.lire("Bla.jpg")));
  • j'ai eu une erreur dans ImageIO sir
  • Maintenant, avec 7 exemples. Et vous n'obtiendrez pas une IOException avec l'exemple de commentaire, il ne compile pas. D'où vient Bla.jpg existent?
  • sir j'ai déjà mis le fond, mais le problème est que je ne peux pas ajouter des boutons dans la trame de fond est la sortie, mais si j'essaie d'ajouter quelques boutons comme ça n'a pas fonctionné .
  • laissez-nous continuer cette discussion dans le chat

InformationsquelleAutor Batusai | 2014-03-04