IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Agents de placement/Fenêtres Java Discussion :

Placer des images sur une image avec un JFrame


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre du Club Avatar de blackhock
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 75
    Points : 41
    Points
    41
    Par défaut Placer des images sur une image avec un JFrame
    Bonjour a tous,
    Vous êtes surement plus connaisseurs que moi en SWING c’est pourquoi je viens solliciter votre aide pour un petit problème qui me bloque.
    Voila j’utilise JFrame pour créer une fenêtre dont je place une image de fond jusque ici ça va bien, ensuite je veux placer des images à des endroits précis sur l’image de fond mais sont succès, à chaque fois que je rajoute une image c’est à la fin, alors que mon but et de placer ces petites images (.png) sur mon fond déjà crée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    public class MyWindow extends JFrame {
     
    	private static final long serialVersionUID = 1L;
     
    	private JTextField screen;
    	private JButton Button;
    	private JLabel Label;
     
    	public MyWindow () {
    		super();
    		build(); 
    	}
     
    	private void build() { 
    		setTitle("myWindow"); 
    		setSize(600, 600); 
    		setLocationRelativeTo(null); 
    		setResizable(false); 
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setContentPane(buildContentPane());
    	}
     
    	private JPanel buildContentPane() {
    		JPanel panel = new JPanel();
    		panel.setLayout(new FlowLayout());
    		panel.setBackground(Color.darkGray);
    		Label = new JLabel(new ImageIcon("imageDeFond.png"));
    		panel.add(Label);
    		screen = new JTextField();
    		screen.setColumns(30);
    		panel.add(screen);
     
    		Button = new JButton(new ImageIcon(image.png"));
    		panel.add(Button);
    		return panel;
    	}
    }
    Merci encore pour toute aide

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    Salut blackhock,

    il te serait possible d'heriter la méthode PaintComponent() de ton JPanel et ainsi d'ajouter ton image de fond et tes images à partir de cette méthode.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
     
    JPanel panel = new JPanel(){
           public void paintComponent(Graphics g){
                g.drawImage(ImageIO.read(new File("tonimagedefond.png")),
                                0,
                                0,
                                width, 
                                height,
                                this);
            // et de même avec tes images
     
         }
     
    };
    C'est une idée mais est ce que ca t'a avancé^^...
    il ne faut jamais faire de traitement lourd dans cette méthode, donc ne jamais y charger une image à partir d'un disque. Tu dois le faire une fois pour toute dans le constructeur.
    Le modérateur se reconnaitra. Je suis heureux de l'apprendre. La modification est évidente...

  3. #3
    Membre du Club Avatar de blackhock
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 75
    Points : 41
    Points
    41
    Par défaut
    Merci Baptiste pour ta réponse,
    Mais est que avec la méthode PaintComponent(), je peux placer mes images ou je veux, je peux les positionner sur n'importe quelle partie de la fenêtre? car mon objectif est de placer mes petites images sur le background image, dans des endroits précis.
    Merci encore

  4. #4
    Membre expérimenté

    Homme Profil pro
    Responsable des études
    Inscrit en
    Mars 2009
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2009
    Messages : 553
    Points : 1 672
    Points
    1 672
    Par défaut
    Citation Envoyé par blackhock Voir le message
    à chaque fois que je rajoute une image c’est à la fin.
    C'est normal car tu ajoutes tes images dans un JPanel qui a un FlowLayout. Avec le FlowLayout, chaque élément que tu rajoutes est placé à la suite des autres.

    Citation Envoyé par blackhock Voir le message
    mon but et de placer ces petites images (.png) sur mon fond déjà crée.
    Pour faire cela, tu vas devoir soit :
    - créer une classe spéciale, qui hérite de JPanel, et dans laquelle tu surcharge la méthode PaintComponent (comme cela a été proposé BaptisteTienko)
    - utiliser un autre Layout Manager qui répond spécifiquement à ton besoin (voire un créer par toi-même)

    Et, effectivement, avec l'une ou l'autre méthode, tu pourras maitriser le placement de tes images.

  5. #5
    Membre du Club Avatar de blackhock
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 75
    Points : 41
    Points
    41
    Par défaut
    Bonsoir nnovic,
    D'abord merci pour ta réponse, c'est la première fois que j'utilise Swing (j'ai déjà utilisé AWT) donc je ne suis pas vraiment familier avec Swing enfin j'essaye...
    Si j'ai bien compris le fait que j'ai utilisé FlowLayout() me cause ce problème, si j'avais utilisé BorderLayout() par exemple je n'aurais pas ce problème???

  6. #6
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 845
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 845
    Points : 22 851
    Points
    22 851
    Billets dans le blog
    51
    Par défaut
    Met le layout à null, ca te permettra de poser tes sous-composants ou bon te semble avec setBounds().
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  7. #7
    Membre du Club Avatar de blackhock
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 75
    Points : 41
    Points
    41
    Par défaut
    Merci pour toutes vos réponse,
    En changeons complètement de Layout j'arrive à placer mes images ou je veux sur la fenêtre.
    J'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    GridBagLayout();
    GridBagConstraints
    et ça marche très bien mais un problème subsiste, je place ces images en tant que Label
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    JLabel img = new JLabel(new ImageIcon("image.png"));
    GridBagConstraints GBC = new GridBagConstraints();
    GBC.insets = new Insets(0, 0, 285, -660);
    panel.add(img, GBC);
    est ce que je peux associer des actions a ces images, avec des listener , avec des boutons(JButton) j'arrive a faire pas de problèmes mais avec des JLabel est il possible?
    Encore merci

  8. #8
    Membre du Club Avatar de blackhock
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 75
    Points : 41
    Points
    41
    Par défaut
    Merci à vous tous pour votre temps et votre contribution, finalement j'ai opté pour la méthode de bouye, j'ai mis la Layout à null et avec setBounds(int ; int ; int ; int), ça marche très bien.
    Encore Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. afficher une image sur une image de fond
    Par vega95 dans le forum wxPython
    Réponses: 2
    Dernier message: 26/11/2008, 18h41
  2. Placer des points sur une image
    Par vallgui dans le forum WinDev
    Réponses: 9
    Dernier message: 22/01/2008, 15h19
  3. Copier une image sur une nouvelle avec dépassement
    Par largowinch dans le forum Imagerie
    Réponses: 5
    Dernier message: 19/07/2007, 09h44
  4. Réponses: 8
    Dernier message: 07/08/2006, 17h40
  5. [Image]charger une image sur une page HTML
    Par Malo dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 08/07/2006, 18h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo