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

Composants Java Discussion :

Générer un composant selon action


Sujet :

Composants Java

  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur de projets
    Inscrit en
    Mai 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur de projets
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 103
    Points : 97
    Points
    97
    Par défaut Générer un composant selon action
    Bonjour à tous.

    Donc voila, je ne suis pas un expert en JAVA, mais je travaille pour le devenir un jour.

    Voila les données:
    - je lis un fichier binaire avec des variables en BYTE et INT
    - les variables sont enregistrées en série (genre : 2 bytes , 1 int, 1 byte)
    - le tout est affiché via une applet dans un navigateur web

    Outil:
    - NetBeans 6.5
    - mon fichier texte

    Idée : j'aimerai créer des lignes de label en fonction de ce que je trouve dans mon fichier texte.

    Question:
    Est ce qu'il est possible de générer, via une methode, un composant de type LABEL et l'intégrer dans un panel deja existant?


    Voici ma méthode ou fonction (je ne sais pas c'est quoi la différence lol...honte à moi)

    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
     
        public void CreatLabel(String name, int PosX, int PosY, int valInt, byte valByte)
        {//pour dire qu'on envoi une variable INT ou BYTE, donner la variable
            //que l'on souhaite envoyer et mettre l'autre à 0
     
            Label lbl = new Label();//Contruction du nouveau label
     
            lbl.setName(name);
            lbl.setLocation(PosX,PosY);
     
            if(valInt != 0)
            {
                String strInt = Integer.toHexString(valInt);
                lbl.setText(strInt);
                System.out.println(strInt);//histoire de vérifier la conversion
            }
            else
            {
                String strByte = Integer.toHexString(valByte);
                lbl.setText(strByte);
                System.out.println(strByte);//histoire de vérifier la conversion
            }
            lbl.setVisible(true);
            lbl.show();
            pnl_data.add(lbl);//ajout dans panel pnl_data -> ca marche pas!!
        }

    ps: je n'ai pas de souci pour lire mon fichier.

  2. #2
    Membre averti

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 85
    Points : 355
    Points
    355
    Par défaut
    salut,

    je ne sais pas si j'ai bien compris exactement ce que tu veux faire.
    Cependant, j'ai cru comprendre que ton pnl_data existe déjà lorsque tu appelles ta méthode, dans ce cas, essaye de faire un "doLayout() dessus après ajout du nouveau label :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    pnl_data.add(lbl);//ajout dans panel pnl_data
    pnl_data.doLayout();
    PS : tu peux aussi tenter un repaint() si ça marche pas...

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur de projets
    Inscrit en
    Mai 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur de projets
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 103
    Points : 97
    Points
    97
    Par défaut Premier essai
    Bonjour maxime_c,

    Merci pour ta proposition. Tu as bien compris ma requête. J'avoue que je n'avais pas pensé à utiliser une méthode qui redessine le composant.

    Malheuresement, aucunes des deux ne fonctionnent dans mon cas.

    Vu que j'avais avancé dans le projet, j'ai fait mes tests sur un jPanel et non plus un Panel.
    En meme temps, je pense qu'ils ont le meme comportement à quelque petit truc pres

    Donc j'ai tout de meme fait le test sur un Panel : mais la non plus ca ne fonctionne pas.


    Est ce qu'il y a des limites dans les conteneurs?
    En fait dans mon test, mon jPanel est contenu dans un jTabbedPane. Bien que je ne pense pas que cela pose un problème, je me permet de poser la question au cas ou je me trompe.

    De plus, est ce qu'un composant nécessite une déclaration du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private javax.swing.JPanel jPnl_archive;
    Dans ce cas, ca ne fonctionnera pas car je ne le fais pas dans ma méthode, vu que je ne sais pas combien de composants je voudrai ajouter dans mon jPanel/Panel .
    J'en viens à : Est ce qu'il existe un moyen de générer une déclaration d'un composant comme ci-dessus?


    MustOne

  4. #4
    Membre averti

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 85
    Points : 355
    Points
    355
    Par défaut
    Salut,

    alors plusieurs choses, pour répondre à tes questions premièrement :
    - A ma connaissance il n'existe pas de limites dans le nombre de conteneurs.
    - Non, un composant ne nécessite pas nécessairement une déclaration en private,
    tout dépend de l'utilisation que tu en as

    Ton problème a quelques peu changé à priori. Si j'ai bien compris, ta appli dispose d'un JTabbedPane
    dans lequel tu souhaites ajouter dynamiquement des panels, c'est bien ça ?

    Si c'est le cas je ferais un truc dans le genre :

    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
     
    private JTabbedPane monJTabbedPane; 
     
    /*****le reste de mon code******/
     
    //cette méthode peut être modifiée à ton goût...
    //elle fait appel à la méthode de création du nouveau panel et l'ajoute au JTabbedPane
    private ajouterUnOnglet(){
    	monJTabbedPane.addTab(titreOnglet, getPanel());
    }
     
    //méthode de création du JPanel
    //là encore, à modifier suivant tes besoins
    private getPanel(){
    	JPanel monPanel = new JPanel();
     
    	/****ajout de mes éléments au panel****/
     
    	return monPanel;
    }

  5. #5
    Membre régulier
    Homme Profil pro
    Ingénieur de projets
    Inscrit en
    Mai 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur de projets
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 103
    Points : 97
    Points
    97
    Par défaut Bonne idée mais...
    C'est une bonne idée ce que tu proposes.... mais mon souci est un peu ailleur =) (je garde ton idée pour éventuellement une évolution de mon applet).



    Donc en fait, mon souci n'a pas trop changé.
    1) En fait, j'ia un TabbedPane avec 2 tab (obtenus en ajoutant 2 jPanels à mon TabbedPane - je ne sais pas expliquer lol )

    2) sur le 1er Tab, j'aimerai ajouter des LABEL en fonction des données que je lis depuis un fichier .dat

    Et ce qui ne fonctionne pas, c'est l'ajout des label.


    Voila =)

    en tout cas, je te remercie de ton aide.

  6. #6
    Membre émérite
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Points : 2 582
    Points
    2 582
    Par défaut
    J'ai l'impression qu'il y a des erreurs un peu partout dans ta programmation, et dans la façon dont tu considères les choses. Par exemple, le code suivant issu de ton premier message :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            lbl.setVisible(true);
            lbl.show();
            pnl_data.add(lbl);//ajout dans panel pnl_data -> ca marche pas!!
    ... ne veut à peut près rien dire, et il n'est pas étonnant que cela ne marche pas. show et setVisible(true) font exactement la même chose, et sont totalement inefficaces si le composant n'est pas inscrit dans un composant visible.

    Je te conseille déjà de lire les guides swing partout, et de te former sur quelque chose de plus simple, par exemple placer des JLabels dans un JPanel (et abandonne le plus vite possible les Panel), JPanel que tu mettras dans une JFrame ; pour les JTabbedPane, vois après.

  7. #7
    Membre régulier
    Homme Profil pro
    Ingénieur de projets
    Inscrit en
    Mai 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur de projets
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 103
    Points : 97
    Points
    97
    Par défaut
    Bonjour monsieur le modérateur


    Juste une petite précision: que signifie

    le composant n'est pas inscrit dans un composant visible
    ?

    Bon je t'avoue que je suis totalement newbie et que mon projet de stage me demande beaucoup en peu de temps. C'est pouquoi j'ai directement attaqué ce que j'ai pu attaqué .

    Cependant, je vais suivre ca :
    Je te conseille déjà de lire les guides swing partout, et de te former sur quelque chose de plus simple, par exemple placer des JLabels dans un JPanel (et abandonne le plus vite possible les Panel), JPanel que tu mettras dans une JFrame ; pour les JTabbedPane, vois après.
    Je vous tiendrai au courant

    Une derniere question: est ce que générer des jLabel selon les résultats de ma lecture de fichier .dat est faisable?


    Cordialement,

    MustOne

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    tu peux générer autant de JLabel que tu veux aussi dynamiquement que tu veux. Par contre, quand tu ajoute un JComponent (donc aussi un JLabel) dans un autre composant déjà visible, il faut faire appel à conteneur.validate() pour qu'il redispose ses composants et les redessine

  9. #9
    Membre régulier
    Homme Profil pro
    Ingénieur de projets
    Inscrit en
    Mai 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur de projets
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 103
    Points : 97
    Points
    97
    Par défaut hum..bon à savoir
    Ok,

    Tout ceci est bon à savoir.

    Maintenant, je vais bosser dessus

    Merci de votre aide. Bien entendu, si vous avez envi d'en dire plus, je suis preneur.


    à Tantôt

  10. #10
    Membre régulier
    Homme Profil pro
    Ingénieur de projets
    Inscrit en
    Mai 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur de projets
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 103
    Points : 97
    Points
    97
    Par défaut Nouvelles
    Bonjour à vous,


    Bon ben j'ai suivi vos conseils. Je me suis autoformé sur l'utilisation des objets Swing.

    J'ai bien réussi à faire ce que je souhaite.

    Néanmoins, j'ai opté pour l'utilisation d'une table: c'est tout de meme plus simple.


    Merci de votre aide.


    Je clique sur "résolu"

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

Discussions similaires

  1. afficher des composant selon le profil
    Par Sun03 dans le forum JSF
    Réponses: 7
    Dernier message: 18/03/2008, 11h14
  2. Peut-on générer un texte selon url ?
    Par spectrom dans le forum Langage
    Réponses: 6
    Dernier message: 31/12/2007, 00h32
  3. [DOM] générer un composant automatiquement
    Par tdihedi dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 29/11/2007, 15h58
  4. Générer un menu selon un répertoire
    Par stailer dans le forum Langage
    Réponses: 7
    Dernier message: 24/11/2006, 10h04
  5. [VB.net] Générer une date selon condition
    Par WriteLN dans le forum Windows Forms
    Réponses: 2
    Dernier message: 20/10/2005, 16h12

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