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

GWT et Vaadin Java Discussion :

[1.7.0] Widget dans la légende d'un CaptionPanel (Fieldset)


Sujet :

GWT et Vaadin Java

  1. #1
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut [1.7.0] Widget dans la légende d'un CaptionPanel (Fieldset)
    Bonjour,

    J'utilise un CaptionPanel dans lequel j'ai une légende. Dans cette légende, je ne veux pas y mettre un simple texte mais un RadioButton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    RadioButton bouton1 = new RadioButton("buttonradio", "Premier cas");
    bouton1.addValueChangeHandler(handler);
    CaptionPanel panel1 = new CaptionPanel(bouton1.toString(), true);
     
    RadioButton bouton2 = new RadioButton("buttonradio", "Deuxième cas");
    bouton2.addValueChangeHandler(handler);
    CaptionPanel panel2 = new CaptionPanel(bouton2.toString(), true);
    Le contenu du handler fait un simple Window.alert("test");

    Apparemment, impossible de passer par le handler, ni celui-là, ni aucun autre (click, focus, etc.).

    Savez-vous pourquoi j'ai ce comportement et/ou comment résoudre ou contourner le problème ?

    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Points : 4 265
    Points
    4 265
    Par défaut
    Le constructeur de caption tel que tu l'utilises prend de l'html en 1° argument si le 2° est à true donc là, ça semble OK.

    En revanche, le toString() utilise DOM.toString(getElement());
    /**
    * Returns a stringized version of the element. This string is for debugging purposes and will NOT be consistent on different browsers.
    *
    * @param elem the element to stringize
    * @return a string form of the element
    */
    public static String toString(Element elem) {
    return elem.getString();
    }
    J'aurai essayé bouton1.getElement().getInnerHtml() ?

    Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait. Marcel PAGNOL
    On ne savait pas que c'était impossible, alors on l'a fait. John Fitzgerald KENNEDY.
    L'inexpérience est ce qui permet à la jeunesse d'accomplir ce que la vieillesse sait impossible. Paul (Tristant) BERNARD
    La meilleure façon de prédire l'avenir, c'est de l'inventer.

  3. #3
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Merci pour ta réponse mais visiblement, ça ne fonctionne pas mieux

  4. #4
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Points : 4 265
    Points
    4 265
    Par défaut
    Je pensai que le bouton radio ne s'affichait pas dans le titre du caption.
    En fait, c'est l'évènement qui ne fonctionne pas.

    Je pense que ça vient du fait qu'au moment où tu fais le toString() ou le getElement().getInnerHtml(), GWT n'a pas encore attaché l'évènement.
    Si tu places le bouton au préalable dans la page puis qu'ensuite tu le "déplace" dans le DOM où tu veux, cela semble fonctionner :

    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
    		RadioButton bouton1 = new RadioButton("buttonradio", "Premier cas");
    		bouton1.addValueChangeHandler(new ValueChangeHandler<Boolean>()
    		{
    			@Override
    			public void onValueChange(ValueChangeEvent<Boolean> event)
    			{
    				Window.alert("clic");
    			}
    		});
    		RootPanel.get().add(bouton1);
     
    		CaptionPanel panel = new CaptionPanel("<span id=\"captionTitle1\"></span>", true);
    		panel.add(new Label("content"));
    		RootPanel.get().add(panel);
     
    		Element titleCaption = DOM.getElementById("captionTitle1");
    		titleCaption.appendChild(bouton1.getElement());
    Je n'ai pas creusé d'avantage ...
    Il faudrait regarder ce que l'ajout initial fait réellement pour appeler le code qui manquerait et faire quelque chose de propre ...

    Il faudrait demander à Google d'ajouter une méthode setCaptionWidget() pour définir le widget du titre.

    Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait. Marcel PAGNOL
    On ne savait pas que c'était impossible, alors on l'a fait. John Fitzgerald KENNEDY.
    L'inexpérience est ce qui permet à la jeunesse d'accomplir ce que la vieillesse sait impossible. Paul (Tristant) BERNARD
    La meilleure façon de prédire l'avenir, c'est de l'inventer.

  5. #5
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Citation Envoyé par benwit Voir le message
    Je pensai que le bouton radio ne s'affichait pas dans le titre du caption.
    En fait, c'est l'évènement qui ne fonctionne pas.
    Oui oui, désolée, je me suis mal exprimée

    Citation Envoyé par benwit Voir le message
    Je pense que ça vient du fait qu'au moment où tu fais le toString() ou le getElement().getInnerHtml(), GWT n'a pas encore attaché l'évènement.
    Si tu places le bouton au préalable dans la page puis qu'ensuite tu le "déplace" dans le DOM où tu veux, cela semble fonctionner :

    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
    		RadioButton bouton1 = new RadioButton("buttonradio", "Premier cas");
    		bouton1.addValueChangeHandler(new ValueChangeHandler<Boolean>()
    		{
    			@Override
    			public void onValueChange(ValueChangeEvent<Boolean> event)
    			{
    				Window.alert("clic");
    			}
    		});
    		RootPanel.get().add(bouton1);
     
    		CaptionPanel panel = new CaptionPanel("<span id=\"captionTitle1\"></span>", true);
    		panel.add(new Label("content"));
    		RootPanel.get().add(panel);
     
    		Element titleCaption = DOM.getElementById("captionTitle1");
    		titleCaption.appendChild(bouton1.getElement());
    Je n'ai pas creusé d'avantage ...
    Il faudrait regarder ce que l'ajout initial fait réellement pour appeler le code qui manquerait et faire quelque chose de propre ...
    Hum, alors j'ai compris l'idée mais je ne travaille pas directement sur le RootPanel et ça à l'air de me poser quelques soucis... Je n'arrive plus à utiliser la méthode appendChild dès que je monte les niveaux...

    Citation Envoyé par benwit Voir le message
    Il faudrait demander à Google d'ajouter une méthode setCaptionWidget() pour définir le widget du titre.
    Je crois que ceci s'y apparente : http://code.google.com/p/google-web-...detail?id=2303

  6. #6
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Bon j'ai une version plus propre et plus fonctionnelle :
    Code Java : 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
    /* Création du RadioButton */
    RadioBouton bouton = new RadioButton("buttonradio", "Bouton 1");
    bouton.addValueChangeHandler(new ValueChangeHandler<Boolean>() {
    	@Override
    	public void onValueChange(ValueChangeEvent<Boolean> event) {
    		Window.alert("clic");
    	}
    });
    /* Attachement du RadioButton au RootPanel (impératif pour prendre en compte les événements) */
    RootPanel.get().add(bouton);
     
    /* Création de la légende (CaptionPanel correspondant à un fieldset en HTML */
    Element legend = DOM.createLegend();
    /* Affectation du RadioButton à la légende */
    legend.appendChild(bouton.getElement());
     
    /* Création du CaptionPanel */
    CaptionPanel panel = new CaptionPanel();
    /* Affectation de la légende au CaptionPanel */
    panel.getElement().appendChild(legend);
     
    /* Ajout du contenu du CaptionPanel (Faire cette étape après avoir affecté la légende sinon la présentation sera mauvaise) */
    panel.add(monWidgetOuPanel);
     
    /* Vous pouvez ensuite ajouter votre CaptionPanel à n'importe quoi d'autre (FlexTable, VerticalPanel, RootPanel, etc.) */

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

Discussions similaires

  1. Graphiques, fixer la couleur dans la légende
    Par Herman dans le forum Access
    Réponses: 1
    Dernier message: 18/01/2007, 15h27
  2. Réponses: 6
    Dernier message: 25/10/2006, 10h46
  3. Positionner un WidGet dans une table
    Par sorry60 dans le forum GTK+ avec C & C++
    Réponses: 7
    Dernier message: 05/11/2005, 19h22
  4. comment modifier les widgets dans une fenètre??
    Par afrikha dans le forum GTK+ avec C & C++
    Réponses: 6
    Dernier message: 14/10/2005, 14h48

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