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 :

Affichage en Java


Sujet :

Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations forums :
    Inscription : Novembre 2010
    Messages : 5
    Par défaut Affichage en Java
    Je cherche des outils qui nous aident à l’optimisation du code de l’affichage en java
    Comme exemple :
    comment optimisé ce code

    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
    // Positionne le GridBagLayout pour le contenu de la fenêtre
    GridBagLayout disposition = new GridBagLayout();
    contenuFenêtre.setLayout(disposition);
    // Tu dois répéter ces lignes pour chaque composant
    // que tu souhaites ajouter au quadrillage
    // Crée une instance de GridBagConstraints
    GridBagConstraints contr = new GridBagConstraints();
    // Affecte les contraintes du champ Affichage
    // coordonnée x dans le quadrillage
    contr.gridx = 0;
    // coordonnée y dans le quadrillage
    contr.gridy = 0;
    // cette cellule a la même hauteur que les autres
    contr.gridheight = 1;
    // cette cellule est 6 fois plus large que les autres
    contr.gridwidth = 6;
    // remplit tout l'espace dans la cellule
    contr.fill = GridBagConstraints.BOTH;
    // proportion d'espace horizontal occupée par ce composant
    contr.weightx = 1.0;
    // proportion d'espace vertical occupée par ce composant
    contr.weighty = 1.0;
    // position du composant dans la cellule
    contr.anchor = GridBagConstraints.CENTER;
    // Crée le champ textuel
    champAffichage = new JTextField();
    // Affecte les contraintes à ce champ
    disposition.setConstraints(champAffichage, contr);
    // Ajoute le champ à la fenêtre
    contenuFenêtre.add(champAffichage);

  2. #2
    Membre éclairé Avatar de amadoulamine1
    Inscrit en
    Avril 2005
    Messages
    260
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 260
    Par défaut
    Je ne sais pas si cela pourra t'aider ou pas
    mais google viens de mettre à disposition l'outil windows pro designer

    tu ajoutes dans les updates site sur eclipse
    http://dl.google.com/eclipse/inst/d2wbpro/latest/3.6

    je pense que cela pourra t'aider j'ai tester et franchement ca depasse VE.
    En esperant t'avoir aidé si j'ai bien compris ta question

  3. #3
    Expert éminent
    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 : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par HafiDelta Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // Tu dois répéter ces lignes pour chaque composant
    // que tu souhaites ajouter au quadrillage
    C'est faux. En général on crée un gridbagconstraint avec toute la config, et entre chaque composant, on se contente de changer le x et le y, le reste on garde. Bref tu peux réutiliser ton GridBagConstraints.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations forums :
    Inscription : Novembre 2010
    Messages : 5
    Par défaut
    Je cherche des outils qui nous aident à l’optimisation du code de l’affichage en java
    Comme exemple :
    comment résumé ce code
    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
    // Positionne le GridBagLayout pour le contenu de la fenêtre
    GridBagLayout disposition = new GridBagLayout();
    contenuFenêtre.setLayout(disposition);
    // Tu dois répéter ces lignes pour chaque composant
    // que tu souhaites ajouter au quadrillage
    // Crée une instance de GridBagConstraints
    GridBagConstraints contr = new GridBagConstraints();
    // Affecte les contraintes du champ Affichage
    // coordonnée x dans le quadrillage
    contr.gridx = 0;
    // coordonnée y dans le quadrillage
    contr.gridy = 0;
    // cette cellule a la même hauteur que les autres
    contr.gridheight = 1;
    // cette cellule est 6 fois plus large que les autres
    contr.gridwidth = 6;
    // remplit tout l'espace dans la cellule
    contr.fill = GridBagConstraints.BOTH;
    // proportion d'espace horizontal occupée par ce composant
    contr.weightx = 1.0;
    // proportion d'espace vertical occupée par ce composant
    contr.weighty = 1.0;
    // position du composant dans la cellule
    contr.anchor = GridBagConstraints.CENTER;
    // Crée le champ textuel
    champAffichage = new JTextField();
    // Affecte les contraintes à ce champ
    disposition.setConstraints(champAffichage, contr);
    // Ajoute le champ à la fenêtre
    contenuFenêtre.add(champAffichage);

  5. #5
    Expert éminent
    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 : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    déjà, en supprimant tout ces commentaire inutile qui ne font que dire ce qui se voit clairement dans le code. Ils ne servent donc à rien (on ne met de commentaire que quand il y a nécessité d'expliquer, sinon le code deviens imbuvable!) voir même induisent en erreur (weightx/weighty n'influence pas la proportion d'espace du composant mais comment est distribué l'espace non utilisé entre les colonnes / lignes)

    Ensuite, a part en retirant le layout dans votre cas, car inutile pour une seul composant je ne vois pas. Là où on réduit le code, c'est dans l'ajout de N composants. Exemple:

    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
     
    contenuFenêtre.setLayout(new GridBagLayout());
    GridBagConstraints contr = new GridBagConstraints();
    contr.fill = GridBagConstraints.BOTH;
    contr.gridx = 0;
    contr.gridy = 0;
    contr.gridwidth = 6;
    contr.weightx = 1.0;
    contr.weighty = 1.0;
    contr.anchor = GridBagConstraints.CENTER;
     
     
    champAffichage = new JTextField();
    contenuFenêtre.add(champAffichage,contr);
    contr.gridwidth = 1;
    contr.gridy = 1;
    contr.gridx = GridbagConstraints.REATIVE;
    for (int i=0; i<6;i++){
      bouton[i]=new JButton(texte[i]);  
      contenuFenêtre.add(bouton[i],contr);
    }

  6. #6
    Membre Expert
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Par défaut
    Mouais, la, l'optimisation recherchée semble etre très fortement liée aux objets utilisés (en l'occurence le GridBagConstraints). Ca veut dire que l'outil devrait connaitre les valeurs par défaut (pour supprimer les eventuelles assignations inutiles). Il dait aussi savoir que l'objet GridBagConstraints peut etre changé entre 2 affectations (quand on fait un add avec un GridBagConstraints, celui-ci est cloné donc on peut le modifier plus tard sans se soucier de l'implication sur les autres composants ou il a été utilisé). Et enfin, il doit analyser le code pour les eventuels changements successifs. Bref, tu cherches une usine à gaz pour optimiser un code très simple à optimiser à la main et qui, en plus, ne te fera quasiment rien gagner en performances...

  7. #7
    Membre chevronné Avatar de javaNavCha
    Homme Profil pro
    EKG Group
    Inscrit en
    Juillet 2009
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Tunisie

    Informations professionnelles :
    Activité : EKG Group
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2009
    Messages : 311
    Par défaut
    un conseil, utilises setLayout(null) et setBounds pour positionner les composants

  8. #8
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    Citation Envoyé par javacha4 Voir le message
    un conseil, utilises setLayout(null) et setBounds pour positionner les composants
    Aargh! qu'est ce qui te fait dire ça? parceque faire une disposition portable c'est compliqué?
    Certes c'est vrai : mais l'autre alternative est encore pire (à mon humble avis - bon c'est vrai je suis parfois tenté -).

  9. #9
    Membre chevronné Avatar de javaNavCha
    Homme Profil pro
    EKG Group
    Inscrit en
    Juillet 2009
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Tunisie

    Informations professionnelles :
    Activité : EKG Group
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2009
    Messages : 311
    Par défaut
    Citation Envoyé par professeur shadoko Voir le message
    Aargh! qu'est ce qui te fait dire ça? parceque faire une disposition portable c'est compliqué?
    Certes c'est vrai : mais l'autre alternative est encore pire (à mon humble avis - bon c'est vrai je suis parfois tenté -).
    Salut professeur shadoko
    T'as dit (à mon humble avis )
    Moi aussi c'est mon avis
    de plus t'as pas donné un argument pour que j'évite cette méthode...

  10. #10
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations forums :
    Inscription : Novembre 2010
    Messages : 5
    Par défaut
    je veux quelque chose comme sa
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GridBagConstraints contr = new GridBagConstraints(0,0,1,6,1.0,1.0);
    est ce que possible de le faire?

  11. #11
    Membre chevronné Avatar de javaNavCha
    Homme Profil pro
    EKG Group
    Inscrit en
    Juillet 2009
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Tunisie

    Informations professionnelles :
    Activité : EKG Group
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2009
    Messages : 311
    Par défaut
    Pour comprendre la classe GridBagConstraints je t'invite à voir ce lien
    http://download.oracle.com/javase/1....nstraints.html

  12. #12
    Membre chevronné Avatar de javaNavCha
    Homme Profil pro
    EKG Group
    Inscrit en
    Juillet 2009
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Tunisie

    Informations professionnelles :
    Activité : EKG Group
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2009
    Messages : 311

  13. #13
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    Citation Envoyé par javacha4 Voir le message
    Salut professeur shadoko
    T'as dit (à mon humble avis )
    Moi aussi c'est mon avis
    de plus t'as pas donné un argument pour que j'évite cette méthode...
    si: portabilité (le credo de java)

  14. #14
    Membre Expert
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Par défaut
    Citation Envoyé par javacha4 Voir le message
    Salut professeur shadoko
    T'as dit (à mon humble avis )
    Moi aussi c'est mon avis
    de plus t'as pas donné un argument pour que j'évite cette méthode...
    Bah si, comme il l'a dit, c'est pas portable. En positionnant de maniere fixe les controles, on se retrouve avec une page qui fonctionne bien sur son ordinateur de developpeur (qui en plus a souvent une resolution ou un format non standard) et très moche sur les ordinateurs des utilisateurs... Sans parler de l'affichage lors d'un redimmentionnement de la fenetre...

    Mais bon, faut reconnaitre que pas mal de site internet sont fait comme ca (optimisés pour une resolution et moche sur les autres)...

  15. #15
    Membre chevronné Avatar de javaNavCha
    Homme Profil pro
    EKG Group
    Inscrit en
    Juillet 2009
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Tunisie

    Informations professionnelles :
    Activité : EKG Group
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2009
    Messages : 311
    Par défaut
    Citation Envoyé par professeur shadoko Voir le message
    si: portabilité (le credo de java)
    Citation Envoyé par hwoarang Voir le message
    Bah si, comme il l'a dit, c'est pas portable. En positionnant de maniere fixe les controles, on se retrouve avec une page qui fonctionne bien sur son ordinateur de developpeur (qui en plus a souvent une resolution ou un format non standard) et très moche sur les ordinateurs des utilisateurs... Sans parler de l'affichage lors d'un redimmentionnement de la fenetre...

    Mais bon, faut reconnaitre que pas mal de site internet sont fait comme ca (optimisés pour une resolution et moche sur les autres)...
    Merci pour cet argument
    Je vois c'est très logique... une fois qu'on change de PC donc probablement la résolution changera...

  16. #16
    Expert éminent
    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 : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par javacha4 Voir le message
    un conseil, utilises setLayout(null) et setBounds pour positionner les composants
    C'est le meilleur moyen pour avoir une prise de bec avec le client parce que l'interface ne marchera pas chez lui (pas les mêmes polices, pas le même DPI, pas la même taille d'écran). un layout à null, c'est la plus mauvaise pratique en swing. Sans compter que certains composant comme le JScrollPane ne marchent simplement pas en layout null.

  17. #17
    Membre chevronné Avatar de javaNavCha
    Homme Profil pro
    EKG Group
    Inscrit en
    Juillet 2009
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Tunisie

    Informations professionnelles :
    Activité : EKG Group
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2009
    Messages : 311
    Par défaut
    Salut tchize_
    J'ai essayé une appli dans un autre PC et j'ai vu une différence !!!

  18. #18
    Membre expérimenté Avatar de sayari.dev
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2010
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2010
    Messages : 142
    Par défaut
    Citation Envoyé par HafiDelta Voir le message
    comment optimisé ce code

    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
    // Positionne le GridBagLayout pour le contenu de la fenêtre
    GridBagLayout disposition = new GridBagLayout();
    contenuFenêtre.setLayout(disposition);
    // Tu dois répéter ces lignes pour chaque composant
    // que tu souhaites ajouter au quadrillage
    // Crée une instance de GridBagConstraints
    GridBagConstraints contr = new GridBagConstraints();
    // Affecte les contraintes du champ Affichage
    // coordonnée x dans le quadrillage
    contr.gridx = 0;
    // coordonnée y dans le quadrillage
    contr.gridy = 0;
    // cette cellule a la même hauteur que les autres
    contr.gridheight = 1;
    // cette cellule est 6 fois plus large que les autres
    contr.gridwidth = 6;
    // remplit tout l'espace dans la cellule
    contr.fill = GridBagConstraints.BOTH;
    // proportion d'espace horizontal occupée par ce composant
    contr.weightx = 1.0;
    // proportion d'espace vertical occupée par ce composant
    contr.weighty = 1.0;
    // position du composant dans la cellule
    contr.anchor = GridBagConstraints.CENTER;
    // Crée le champ textuel
    champAffichage = new JTextField();
    // Affecte les contraintes à ce champ
    disposition.setConstraints(champAffichage, contr);
    // Ajoute le champ à la fenêtre
    contenuFenêtre.add(champAffichage);
    En une première lecture, je pense que tu peux réduire encore ton code :

    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
    GridBagConstraints contr = new GridBagConstraints();
    // Affecte les contraintes du champ Affichage
    // coordonnée x dans le quadrillage
    contr.gridx = 0;
    // coordonnée y dans le quadrillage
    contr.gridy = 0;
    // cette cellule a la même hauteur que les autres
    contr.gridheight = 1;
    // cette cellule est 6 fois plus large que les autres
    contr.gridwidth = 6;
    // remplit tout l'espace dans la cellule
    contr.fill = GridBagConstraints.BOTH;
    // proportion d'espace horizontal occupée par ce composant
    contr.weightx = 1.0;
    // proportion d'espace vertical occupée par ce composant
    contr.weighty = 1.0;
    // position du composant dans la cellule
    contr.anchor = GridBagConstraints.CENTER;
    devient

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GridBagConstraints contr = new GridBagConstraints(0, 0, 6, 1.0, GridBagConstraints.BOTH, 1.0, GridBagConstraints.CENTER)

  19. #19
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations forums :
    Inscription : Novembre 2010
    Messages : 5
    Par défaut
    Citation Envoyé par sayari.dev Voir le message
    En une première lecture, je pense que tu peux réduire encore ton code :

    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
    GridBagConstraints contr = new GridBagConstraints();
    // Affecte les contraintes du champ Affichage
    // coordonnée x dans le quadrillage
    contr.gridx = 0;
    // coordonnée y dans le quadrillage
    contr.gridy = 0;
    // cette cellule a la même hauteur que les autres
    contr.gridheight = 1;
    // cette cellule est 6 fois plus large que les autres
    contr.gridwidth = 6;
    // remplit tout l'espace dans la cellule
    contr.fill = GridBagConstraints.BOTH;
    // proportion d'espace horizontal occupée par ce composant
    contr.weightx = 1.0;
    // proportion d'espace vertical occupée par ce composant
    contr.weighty = 1.0;
    // position du composant dans la cellule
    contr.anchor = GridBagConstraints.CENTER;
    devient

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GridBagConstraints contr = new GridBagConstraints(0, 0, 6, 1.0, GridBagConstraints.BOTH, 1.0, GridBagConstraints.CENTER)
    Merci c'est la réponse que je cherchais

Discussions similaires

  1. Affichage en java
    Par bsangoku dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 03/05/2010, 15h10
  2. Serveur jeu avec affichage en java
    Par mr_samurai dans le forum Général Java
    Réponses: 1
    Dernier message: 05/11/2009, 16h50
  3. UTF-8 : problème d'affichage (Eclipse/Java)
    Par number6six dans le forum Eclipse Java
    Réponses: 8
    Dernier message: 26/06/2009, 18h01
  4. automatisation affichage panels java
    Par dreylm dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 02/02/2009, 16h08
  5. Probleme d'Affichage en JAVA
    Par Dan99 dans le forum Langage
    Réponses: 4
    Dernier message: 27/11/2007, 09h33

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