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

SWT/JFace Java Discussion :

Valeur Numérique des Styles SWT


Sujet :

SWT/JFace Java

  1. #1
    Membre éclairé Avatar de pmboutteau
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Février 2005
    Messages : 601
    Par défaut Valeur Numérique des Styles SWT
    Bonjour à tous,


    J'ai un composite qui regroupe différents groupes qui contiennent eux des boutons, des labels etc.....

    J'ai actuellement tout qui est grisé via un setReadOnlyComposite maison.

    Je voudrais dégriser un bouton. C'est le seul de style None.

    Quand je regarde sa valeur en debug j'ai une valeur de 0 sur le SWT.None.

    Seulement quand je fais mon test j'ai une valeur de 50331656 sur le getStyle de mon bouton.

    De ce fait j'ai mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (bouton.getStyle() == 50331656) {
    					bouton.setEnabled(true);
    				} else {
    					bouton.setEnabled(false);
    				}
    et ça marche mais je pense qu'il y a mieux que la valeur en dure.

    Merci de votre aide.

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Ce n'est pas une bonne idée d'identifier un bouton par son style :

    • Le style n'est pas un indentifiant
    • Un Button ne peut pas avoir le style NONE : le code de SWT, par la méthode checkStyle() s'arrange pour forcer les styles idoines manquants, et par défaut un Button est SWT.PUSH au minimum
    • Tu pourras avoir plusieurs composants de même style. Même si ce n'est pas le cas dans ton contexte spécifique, tu ne peux pas savoir si tu changeras ça plus tard.


    De manière général, l'attribut style est un champ de bits : on teste donc les valeurs par une opération du type bitwise, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ( (button.getStyle() & SWT.PUSH)==SWT.PUSH ) {
    // le bouton est un PUSH button
    }
    Pour identifier des composants, dans des traitements génériques, il est bien plus simple et sûr d'utiliser le "champ" data. A là création : button.setData(KEY_MON_ID, MON_BUTTON_ID_TRUC);, ou KEY_MON_ID est une clef de ton choix (un String), de préférence suffisamment "élaborée" pour ne pas risquer de rentrer en collision avec une clef de quelqu'un d'autre, et MON_BUTTON_ID_TRUC une valeur pour associée, qui peut être n'importe quoi, que tu puisses retrouver pour identifier ton bouton. Par exemple, on peut imaginer qu'on a plein de boutons et que chaque bouton est associé à un fichier : on peut mettre l'instance de File comme valeur, ce qui permet de retrouver le bouton pour un File donné.

    Mais le plus simple encore est d'avoir une référence sur le bouton, soit sous forme de variable si on fait une classe spécifique, ce qui permet d'y accéder directement, soit en data (comme expliqué ci-avant, où la clef pourra être "MY_BUTTON_MACHIN", et la valeur la référence de 'instance de Button) dans le Composite, ce qui permet de le retrouver plus simplement qu'en parcourant tous les composants et en testant leur style.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre éclairé Avatar de pmboutteau
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Février 2005
    Messages : 601
    Par défaut
    Merci.

    Pour résumé je déclare

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    boutonDetailIncFin.setData("keyBoutonDetail", "valeurBoutonDetail");
    et ensuite je le teste comme çà?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (bouton.getData("keyBoutonDetail") == "valeurBoutonDetail")

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par pmboutteau Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (bouton.getData("keyBoutonDetail") == "valeurBoutonDetail")
    plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( "valeurBoutonDetail".equals(bouton.getData("keyBoutonDetail")) )
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre éclairé Avatar de pmboutteau
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Février 2005
    Messages : 601
    Par défaut
    Merci.

    C'est nickel.

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

Discussions similaires

  1. [C# 2.0] MaskedTextBox qui ne permet que des valeurs numériques
    Par Mast3rMind dans le forum Windows Forms
    Réponses: 9
    Dernier message: 01/09/2006, 10h33
  2. Meilleur type table pour stocker des valeurs numérique
    Par vodevil dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 22/04/2006, 20h42
  3. souci avec le format des valeurs numériques.
    Par LESOLEIL dans le forum Langage
    Réponses: 9
    Dernier message: 05/04/2006, 16h12
  4. Trier une colonne avec des valeurs numériques ou textes
    Par jfc dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 07/02/2006, 11h15
  5. [xslt] filtrer des valeurs numériques
    Par yos dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 20/09/2005, 12h01

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