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 :

Nombre de widget dans un vertical panel


Sujet :

GWT et Vaadin Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 56
    Par défaut Nombre de widget dans un vertical panel
    Je voudrais savoir si le nombre de widget est limité dans un VerticalPanel?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 56
    Par défaut
    En fait, je crée un panel extends VerticalPanel et dans ce panel je dispose une FlexTable et en dessous je voudrais ajouter 2 boutons mais à la compilation cela me génère une erreur.
    Peut-être ne peut on pas ajouter de button dans un verticalPanel?

  3. #3
    Membre expérimenté

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

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 85
    Par défaut
    A priori je dirais que non (en fait je vois pas trop pourquoi ça serait le cas).

    Mais je t'avouerai que je ne me suis jamais posé la question...

    arf... là je répondais à ta première question !!

    Mais pour répondre à la deuxième :
    si, on peut naturellement placé un bouton dans un verticalPanel.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 56
    Par défaut
    Au début je n'ajoutais que "t" ma flextable:
    this.add(t);

    Je veux ajouter mes 2 boutons:
    private Button btnModifier;
    private Button btnSupprimer;
    this.add(btnModifier);
    this.add(btnSupprimer);

    Et là j'a une erreur :
    [ERROR] Unable to load module entry point class com.gwt.client.Administrateur (see associated exception for details)
    java.lang.NullPointerException: null
    at com.google.gwt.user.client.ui.ComplexPanel.add(ComplexPanel.java:76)
    at com.google.gwt.user.client.ui.VerticalPanel.add(VerticalPanel.java:52)
    at com.gwt.client.Panel.PanelDepart.<init>(PanelDepart.java:85)
    at com.gwt.client.Administrateur.onModuleLoad(Administrateur.java:33)
    at com.google.gwt.dev.shell.ModuleSpace.onLoad(ModuleSpace.java:342)
    at com.google.gwt.dev.shell.BrowserWidget.attachModuleSpace(BrowserWidget.java:326)
    at com.google.gwt.dev.shell.ie.BrowserWidgetIE6.access$200(BrowserWidgetIE6.java:36)
    at com.google.gwt.dev.shell.ie.BrowserWidgetIE6$External.gwtOnLoad(BrowserWidgetIE6.java:70)
    at com.google.gwt.dev.shell.ie.BrowserWidgetIE6$External.invoke(BrowserWidgetIE6.java:125)
    at com.google.gwt.dev.shell.ie.IDispatchImpl.Invoke(IDispatchImpl.java:293)

  5. #5
    Membre éprouvé Avatar de Caroline76
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 94
    Par défaut
    Tu initialises bien tes boutons ?
    btnModifier = new Button("modifier");

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 56
    Par défaut
    Merci c'etait simplement ca.
    mais j'ai toujours un problème je déclare mes bouton après ma flextable mais l apparaissent avant.
    Et aussi est-il possible de mettre les bouton l'un après l'autre horyzontalement dans mon vertical panel ou je doit utiliser un autre type de panel?

  7. #7
    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
    Par défaut
    Bonsoir,

    L'ordre d'apparition dans le vertical Panel, c'est pas l'ordre de déclaration des composants mais l'ordre d'ajout (les appels de la méthode add)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Button b1= new Button("b1");
    Button b2= new Button("b2");
    Button b3= new Button("b3");
     
    HorizontalPanel hp = new HorizontalPanel ();
     
    VerticalPanel p = new VerticalPanel();
    p.add(b2);
    hp.add(b3);
    hp.add(b1);
    p.add(hp);
    Tu obtiens :

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 56
    Par défaut
    Je fais le add de mes boutons après ma flextable et mes boutons se situent toujours en dessus de ma flextable ( t étant ma flextable )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    panelBoutons.add(btnModifier);
    panelBoutons.add(btnSupprimer);
     
    this.add(t);
    this.add(panelBoutons);

  9. #9
    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
    Par défaut
    Ton extrait de code, tu le sors de quelle classe ?
    Autrement dit, this fait référence à ton objet courant qui est un ... ?

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 56
    Par défaut
    Mon objet est un PanelDepart extends VerticalPanel

  11. #11
    Membre éprouvé Avatar de Caroline76
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 94
    Par défaut
    Es-tu sur que tu n'as pas laisse trainer un "this.add(t);" plus loin ? Ce comportement est etrange...
    Pourrais-tu poster le code de toute la classe ?

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 56
    Par défaut
    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
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
     
    package com.gwt.client.Panel;
     
    import com.google.gwt.user.client.HTTPRequest;
    import com.google.gwt.user.client.ResponseTextHandler;
    import com.google.gwt.user.client.ui.Button;
    import com.google.gwt.user.client.ui.ClickListener;
    import com.google.gwt.user.client.ui.FlexTable;
    import com.google.gwt.user.client.ui.HorizontalPanel;
    import com.google.gwt.user.client.ui.SourcesTableEvents;
    import com.google.gwt.user.client.ui.TableListener;
    import com.google.gwt.user.client.ui.VerticalPanel;
    import com.google.gwt.user.client.ui.Widget;
    import com.gwt.client.BDD.RetourBDD;
    import com.gwt.client.Utilisateur.Utilisateur;
    import com.gwt.client.dialogueBox.FenetreModifier;
    import com.gwt.client.dialogueBox.FenetreSupprimer;
     
     
    public class PanelUtilisateur extends VerticalPanel {
     
    	private FlexTable t = new FlexTable();
    	public static PanelUtilisateur instance;
    	public String reponsePhp;
    	public String reponsePhp2;
    	public RetourBDD str;
    	private int selectedRow;
    	private Utilisateur[] utilisateurs;
    	private int nombreChamps;
    	private int longueurTotale;
    	private Button btnModifier;
    	private Button btnSupprimer;
    	private HorizontalPanel panelBoutons;
     
    	public PanelUtilisateur() {
     
    		/* Url de destination */
    		String url = "http://127.0.0.1/getAllUtilisateurs.php";
     
    		boolean good = HTTPRequest.asyncGet(url , new ResponseTextHandler(){
    			public void onCompletion(String responseText) {
     
    				/* Récuperation de la reponse dans reponsePhp */
    				reponsePhp = responseText;
     
    				/* Création des 7 colonnes de la flextable */  
    				t.setTitle("Utilisateur(s)");
    			    t.setText(0, 0,"Login");
    			    t.setText(0, 1,"Mot de Passe");
    			    t.setText(0, 2,"Nom");
    			    t.setText(0, 3,"Prénom");
    			    t.setText(0, 4,"Email");
    			    t.setText(0, 5,"Fonction");
    			    t.setText(0, 6,"Droit");
    			    t.setWidth("100%");
    			    t.setCellSpacing(2);
     
    			    /* Utilisation du css sur la ligne des titres du tableau */
    			    for (int i = 0; i < 7; i++) {
    			    	 t.getCellFormatter().addStyleName(0, i, "ajout-panelAjout");
    				}
     
    			    /* Création d'un objet RetourBDD avec le retour du HttpRequest */ 
    			    str = new RetourBDD(reponsePhp, ";");
     
    			    /* Calcul des longueur totale et le nombre de champs de la chaine */
    			    longueurTotale = reponsePhp.length();
    				nombreChamps = (str.compteChamps(longueurTotale)-1)/7;
     
    				/* Création d'un tableau d'utilisateur */
    			    utilisateurs = new Utilisateur[nombreChamps+1];
     
    			    /* Appel de la méthode getAllUtilisateurs pour remplir le tableau d'utilisateur */
    				utilisateurs = Utilisateur.getAllUtilisateurs(nombreChamps,longueurTotale, reponsePhp);
     
    				/* Appel de la methode addUtilisateurs pour ajouter les utilisateurs dans le tableau */
    				for (int i = 0; i <= nombreChamps; i++)
    				   	addUtilisateur(utilisateurs[i],i+1);
     
    				/* Listenner pour pouvoir cliquer sur une ligne du tableau */
    			    t.addTableListener(new TableListener(){
    			    	public void onCellClicked(SourcesTableEvents sender, int row, int cell) {
    				    	/* Selection de la ligne cliquée avec -1 pour la ligne de titre */
    			    		if (row > 0) {
    				    		selectRow(row - 1);
    				    	}
    				    }
    			    }); 
    			}
    		});
    		btnModifier = new Button ("Modifier");
    		btnSupprimer = new Button ("Supprimer");
     
    		btnModifier.addClickListener(new ClickListener() {
      			public void onClick(Widget sender) {
      				FenetreModifier fenMod = new FenetreModifier(PanelUtilisateur.this, utilisateurs[selectedRow], selectedRow);
      				fenMod.show();
      				fenMod.center(); 
      			}
     
      		});
     
    		btnSupprimer.addClickListener(new ClickListener() {
      			public void onClick(Widget sender) {			
      				FenetreSupprimer fenMod = new FenetreSupprimer(PanelUtilisateur.this, utilisateurs[selectedRow], selectedRow);
      				fenMod.show();
      				fenMod.center(); 				
      			}
     
      		});
     
    		panelBoutons = new HorizontalPanel();
     
    		panelBoutons.add(btnModifier);
    		panelBoutons.add(btnSupprimer);
     
    		this.add(t);
    		this.add(panelBoutons);
    		this.setWidth("75%");
     
    	    instance=this;
     
    	}
     
    	private void selectRow(int row) {
    		styleRow(selectedRow, false);
    		styleRow(row, true);
    		selectedRow = row;
    	}
     
    	private void styleRow(int row, boolean selected) {
    		/* Uilisation du css pour colorer la ligne selectionnée ou retirer la couleur quand elle est deselectionnée */
    		if (row != -1) {
    			if (selected) {
    				t.getRowFormatter().addStyleName(row + 1, "ligneSelectionnee");
    			} else {
    				t.getRowFormatter().removeStyleName(row + 1, "ligneSelectionnee");
    			}
    		}
     
    	} 
     
     
    	private void addUtilisateur(Utilisateur utilisateur,int i) {
    	    /* Pour chaque ligne appel des methodes pour avoir les nom , ... puis les ajouter dans le tableau */
    		t.setText(i, 0,utilisateur.getLogin());
    	    t.setText(i, 1,utilisateur.getPwd());
    	    t.setText(i, 2,utilisateur.getNom());
    	    t.setText(i, 3,utilisateur.getPrenom());
    	    t.setText(i, 4,utilisateur.getEmail());
    	    t.setText(i, 5,utilisateur.getFonction());
    	    t.setText(i, 6,utilisateur.getDroit());
     
    	    /* Utilisation du css pour changer la couleur 1 ligne sur 2  */
    	    for (int j = 0; j < 7; j++) {
    	    	if(i%2==0)
    	    		t.getCellFormatter().addStyleName(i, j, "tableauLigne1");
    	    	else
    	    		t.getCellFormatter().addStyleName(i, j, "tableauLigne2");	
    		}
    	}
    }

  13. #13
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 54
    Par défaut
    salut,

    ça fait maintenant 1 bon mois que je travail avec GWT et plus particulièrement avec GWT-ext qui est une extension.

    Bref pour la petite histoire, je te conseil de ne pas étendre une classe VerticalPanel mais plutôt de créer un objet qui étend Composite. Et là dedans tu crée tes panels etc.

    Pourquoi? Car j'ai eu des problème car j'avais des "add(Component)" dans mon constructeur tout comme toi maintenant. Tu ne devrais pas rencontrer de problèmes pour l'instant mais fais attention aux mises à jour et si tu utilises un jour une bibliothèque étendue de GWT comme gwt-ext.


    Sinon dans ton code je ne comprends pas trop le pourquoi ta FlexTable est en dessous des boutons... ça me semble étrange. Si tu ne trouves pas la solution essaye de passer par des objets Composite, tu vas voir un petit tour sur le site de gwt et tu comprendras très vite comment faire des objets qui étendent composite.

Discussions similaires

  1. Nombre de lignes dans un widget Text
    Par touronster dans le forum Tcl/Tk
    Réponses: 2
    Dernier message: 27/04/2010, 17h46
  2. ascenseur vertical dans un rich:panel
    Par goute dans le forum JSF
    Réponses: 4
    Dernier message: 20/11/2008, 11h58
  3. [CR]nombre de jours dans un mois donné
    Par liberio dans le forum Formules
    Réponses: 2
    Dernier message: 20/04/2004, 16h54
  4. Réponses: 2
    Dernier message: 02/03/2004, 19h38
  5. recherche du nombre d'occurences dans une table
    Par berry dans le forum Requêtes
    Réponses: 3
    Dernier message: 09/01/2004, 20h03

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