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

Interfaces Graphiques en Java Discussion :

Problème du JButton affiché invisible...


Sujet :

Interfaces Graphiques en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 190
    Par défaut Problème du JButton affiché invisible...
    Bonjour, mon binôme et moi-même débutons en Interfaces graphiques et nous sommes en train de créer une IHM pour un programme résolvant des systèmes linéaires, seulement nous voulions avoir une image de fond dans nos JPanel (ca, ca fonctionne), mais nos boutons sont "fantômes", en effet, ils ne deviennent visibles qu'une fois qu'on les a survolés à la souris... gênant ! Sauriez vous nous indiquer l'erreur ? Merci d'avance.

    Voici le code :

    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
    package sysihm;
     
    import java.awt.*;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import javax.imageio.ImageIO;
    import javax.swing.*;
     
    public class ImageFond extends JPanel {
    	private String filePath;
    	public ImageFond(String filePath) {
    		this.filePath = filePath;
    		JButton toto = new JButton("toto");
    		toto.setVisible(true);
    		toto.setOpaque(true);
    		add(toto,"");
    	}
    	public void paint(Graphics g) {
    		try {
    			BufferedImage image = ImageIO.read(new File(filePath));
    			g.drawImage(image, 0, 0, null);
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    	public static void main(String[] args) {
    		String imagePath = "C:/Documents and Settings/Admin/Bureau/font.jpg";
    		ImageFond fond = new ImageFond(imagePath);
    		JFrame fen = new JFrame();
    		fen.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		fen.setContentPane(fond);
    		fen.pack();
    		fen.setVisible(true);
    	}
    }

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Pour modifier l'aspect d'un JComponent (donc d'un JPanel dans ton cas), il ets préférable de redéfinir la méthode paintComponent plutôt que la méthode paint.

    Il est également peu recommandé de rechargé l'image à chaque repaint, niveau perf c'est pas tip top

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    import java.awt.Graphics;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
     
    import javax.imageio.ImageIO;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
     
     
    public class ImagePane extends JPanel{
     
        private BufferedImage img;
     
        /**
         * @param img
         */
        public ImagePane(BufferedImage img) {
            this.img = img;
        }
     
        public ImagePane() {
            try {
                img = ImageIO.read(new File("test.png"));
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
     
     
        @Override
        protected void paintComponent(Graphics g) {
            // TODO Auto-generated method stub
            super.paintComponent(g);
            g.drawImage(img, 0, 0, getWidth(), getHeight(), null);
        }
     
        public static void main(String[] args) {
            JFrame f = new JFrame();
            ImagePane pane = new ImagePane();
            pane.add(new JButton("hello"));
            f.add(pane);
            f.setSize(200,200);
            f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            f.setLocationRelativeTo(null);
            f.setVisible(true);
     
        }
    }

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 190
    Par défaut
    merci beaucoup ! impeccable on va s'inspirer de ton code ! merci encore.

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

Discussions similaires

  1. Problème de JButton
    Par julien1451 dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 29/04/2008, 08h45
  2. Problème de démarrage.. affiche (NTLDR manque)
    Par nix01 dans le forum Composants
    Réponses: 6
    Dernier message: 25/04/2008, 11h24
  3. [AJAX] Masquer/Afficher un Accordion
    Par Ben1987 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 09/07/2007, 14h48
  4. Problème avec JButton
    Par bressan dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 20/06/2006, 13h01
  5. [JButton] Afficher texte en survolant bouton.
    Par Galima dans le forum Composants
    Réponses: 2
    Dernier message: 04/06/2004, 22h21

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