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

 Java Discussion :

Problème d'affichage Composants


Sujet :

Java

  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2008
    Messages : 13
    Par défaut Problème d'affichage Composants
    Bonjour j'aimerai savoir pourquoi mon JLabel dans la méthode ajoutFilm() ne s'affiche pas en entier.

    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
     
    public class VideoTheque extends JFrame implements ActionListener
    {
        private JMenuBar menuBar;
        private JMenu fichier;
        private JMenu film;
        private JMenu client;
        private JMenuItem quitter;
        private JMenuItem ajoutF;
        private JMenuItem supprF;
        private JMenuItem listeF;
        private int larg;
        private int haut;
        private JLabel titre;
     
        public VideoTheque()
        {
            //Recupérer les dimension de l'écran
            Toolkit tk = Toolkit.getDefaultToolkit();
            Dimension dimEcran = tk.getScreenSize();
            larg = (dimEcran.width)/2;
            haut = (dimEcran.height)/2;
            //La fenetre fera la moitié des dimension de l'écran
            setSize(larg,haut);
            setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            setLocationRelativeTo(null);
            setLayout(null);
            //Initialisation de la barre de menu
            menuBar = new JMenuBar();
            fichier = new JMenu("Fichier");
            quitter = new JMenuItem("Quitter");
            quitter.addActionListener(this);
            fichier.add(quitter);
            film = new JMenu("Film");
            ajoutF = new JMenuItem("Ajouter un film");
            ajoutF.addActionListener(this);
            supprF = new JMenuItem("Supprimer un film");       
            listeF = new JMenuItem("Liste des film");
            film.add(ajoutF);
            film.add(supprF);
            film.add(listeF);
            client = new JMenu("Client");
            menuBar.add(fichier);
            menuBar.add(film);
            menuBar.add(client);
     
            setJMenuBar(menuBar);
     
     
        }
     
        public void actionPerformed(ActionEvent event) 
        {
            if(event.getSource() == quitter)
            {
                System.exit(0);
            }
            if(event.getSource() == ajoutF)
            {
                ajoutFilm();
     
            }
     
        }
        public void ajoutFilm()
        {
            titre = new JLabel("Ajouter un film");
            titre.setBounds(150,20,100,30);
            add(titre);
     
        }
    }

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 105
    Par défaut
    Rajoute un repaint(); dans ajoutFilm(). Ca marche mieux ou pas ?
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Ne s'affiche pas en entier ? Tu peux préciser ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  4. #4
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 105
    Par défaut
    Le menu recouvre en fait la ou le label va se mettre. Il n'y a pas de repaint, donc il y'a repaint uniquement la ou y'avait le menu qui a disparu si tu me suits.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 483
    Par défaut
    Il faut toujours appeler invalidate après avoir modifié un composant déjà présent à l'écran. Fait un getContentPane().invalidate() pour afficher correctement ton label

  6. #6
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2008
    Messages : 13
    Par défaut
    En fait il n'affiche que le début de la phrase "Ajout d'un" et pourtant il reste encore de la place pour afficher le reste. J'ai essayer avec invalidate() mais sa ne fonctionne pas ou alors je la place mal, je l'a met juste après mon add(titre);.

  7. #7
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 483
    Par défaut
    tu as fait un setLayout(null), il n'y a donc plus de layutmanager qui va dimensionner correctement ton JLabel, ensuite tu fait un setBounds sur ton JLabel, si les bonds n'ont pas une taille suffisante, le texte est tronqué. Regarde ce que te dit titre.getPreferredSize(), et compare ça a la lageur de ton bounds, tu verra que ton bonds est plus petit.

  8. #8
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 105
    Par défaut
    Citation Envoyé par setto Voir le message
    En fait il n'affiche que le début de la phrase "Ajout d'un" et pourtant il reste encore de la place pour afficher le reste. J'ai essayer avec invalidate() mais sa ne fonctionne pas ou alors je la place mal, je l'a met juste après mon add(titre);.
    Comique car quand j'essaye ton exemple, ce que tu dis ce produit (debut du mot marqué mais pas le bout car le menu se dessine dessus...). Je rajoute le repaint (certainement pas la meilleur facon) comme je t'ai dit et aucun problemes le mot est bien dessiné ... maintenant tu fais ce que tu veux.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 483
    Par défaut
    sinon, correction, c'est "validate" pas "invalidate" qu'il faut appeler. Et tu va me faire plaisir de retirer cet affreux setLayout(null). Parceque, comme t'as pas mis de layout, le contentpane de ta fenetre a pas la bonne taille -> coupure

  10. #10
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 105
    Par défaut
    Et si il veut utiliser le Null Layout, il marche aussi l'invalidate ? (c pas un provoque hein Car entre nous, avec le Null Layout, mis a part REPAINT() rien n'affiche son truc correctement.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #11
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2008
    Messages : 13
    Par défaut
    Merci sa fonctionne effectivement avec le repaint().
    Mais pourriez vous me conseiller un layout manager qui me permette de placer mes composant un peu ou je veux dans la fenetre (il y a bien le gridbaglayout mais il m'a l'air un peu lourd d'utilisation pour une interface graphique assez simple peut etre que je me trompe)

  12. #12
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 483
    Par défaut
    dans une interface graphique "assez simple", on ne hardcode aucun composant dans une position précise. Utiliser des positions absolue, comme tu viens déjà de la constater, pose plus de problèmes qu'il n'en résoud. Le gridbaglayout est très souple, mais lourd a utiliser. En composant quelques panel avec des layout de base (flowlayout, gridlayout, boxlayout) ou peux déjà créer des disposition complexes à pas cher en termes de développement. Suffit, pour commencer, de dessiner ton interface sur un bout de papier puis de la couper en quelque rectangle (les panel) pour voir comment tu va les combiner.

    Si t'as des problèmes avec le choix des layout, commence par regarder la doc de chaque layout (pour savoir ce qu'il faut faire) et si tu t'en sort pas, tu sera pas le premier à poster un croquis sur le forum pour avoir des avis

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/09/2009, 12h12
  2. problème d'affichage des composants
    Par charpe_a dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 15/09/2008, 17h05
  3. Réponses: 3
    Dernier message: 08/07/2008, 00h03
  4. Problème d'affichage avec le composant JTable
    Par vidocq dans le forum Composants
    Réponses: 2
    Dernier message: 03/04/2006, 12h22
  5. Problème d'affichage dans un composant TScrollBox
    Par erossi dans le forum Composants VCL
    Réponses: 3
    Dernier message: 14/09/2005, 12h29

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