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

Agents de placement/Fenêtres Java Discussion :

layout awt avec composant swing


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2003
    Messages
    65
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Décembre 2003
    Messages : 65
    Par défaut layout awt avec composant swing
    bonjour à tous!

    je suis actuellement face à un dilemme :
    depuis toujours, j'entends dire qu'il ne faut pas mélanger AWT et SWING.
    Alors, peut on utiliser un layout de AWT (comme les fameux GridBagLayout ou BorderLayout) pour des composants swing??

    Ceci étant dit, j'ai donc quelques questions :
    • si j'utilise un BorderLayout avec des composants SWING et que je veux imposer une taille initiale à un composant, vaut-il mieux que j'utilise setSize (swing) ou setPrefered/Minimum/MaximumSize (awt)?
    • De même, si je veux imposer une taille initiale à ma JFrame, quel méthode vaut-il mieux que j'utilise?
    • question subsidiaire, j'ai entendu dire que selon les OS, il y avait quelques légères différences concernant la gestion de la taille, info ou intox (perso je penche plutôt pour info)


    Dernière question, quel est l'intérêt, du point de vue génie logiciel, d'avoir fait hériter swing de awt plutôt que d'avoir utiliser la délégation?

    merci d'avance

    mobi

  2. #2
    Membre Expert
    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
    Par défaut
    Lorsqu'on dit qu'il ne faut pas mélanger swing et awt, il s'agit uniquement des composants graphiques qui héritent de java.awt.Component (à part le JComponent, bien sûr).

    Sinon, swing utilise pas mal de choses de awt : Graphics, les layouts, EventQueue...

    Le BorderLayout est un layout mal pratique si tu veux fixer des tailles aux composants. Pour te répondre plus complètement sur ces histoires de tailles, pourrais-tu nous dire quelle sorte de répartition voudrais-tu donner à tes composants ?

    Pour donner la taille que tu veux à ta fenêtre, il suffit de ne pas appeler la méthode pack, et de te débrouiller avec le déclenchement des layouts.

    Pourquoi l'héritage et pas la déléguation dans swing ? C'est que, à l'époque de swing, l'héritage était encore à la mode. La déléguation, aussi, vivra ce que vivent les roses... Vivons avec les roses ?

  3. #3
    Membre averti
    Inscrit en
    Décembre 2003
    Messages
    65
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Décembre 2003
    Messages : 65
    Par défaut
    Citation Envoyé par gifffftane Voir le message
    Le BorderLayout est un layout mal pratique si tu veux fixer des tailles aux composants. Pour te répondre plus complètement sur ces histoires de tailles, pourrais-tu nous dire quelle sorte de répartition voudrais-tu donner à tes composants ?
    je n'ai pas d'exemple particulier. En fait, ma question porte pour toutes les configurations possible.

    Citation Envoyé par gifffftane Voir le message
    Pour donner la taille que tu veux à ta fenêtre, il suffit de ne pas appeler la méthode pack, et de te débrouiller avec le déclenchement des layouts.
    donc, si je fixe la taille de chacun de mes composants et que je n'appelle pas la méthode pack(), ma JFrame aura automatiquement la bonne taille??? a moins que je ne comprenne pas correctement le sens de "déclenchement des layouts"

    mobi

  4. #4
    Membre Expert
    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
    Par défaut
    En java, en tous les cas en swing, il vaut mieux éviter de raisonner en taille des composants graphiques, mais il faut préférer raisonner selon leurs dispositions respectives.

    Par exemple, avec la disposition BorderLayout, il y a un panneau au centre, un au sud, au nord, est et ouest. C'est tout (ou à peu près) ce qu'on sait. Les tailles exactes sont inconnues, et il est mieux qu'elles le restent.

    Bien sûr il n'est pas toujours possible, ni même souhaitable, de raisonner comme ça, mais c'est à cela qu'il faut s'entrainer.

    Les composants swing encadrent les variations possibles, avec les notions de maximumSize, minimumSize, et preferredSize, mais ces valeurs ne sont pas respectées par tous les layouts. Elles le sont par les layouts swing, comme le BoxLayout. Je ne crois pas qu'elles le soient par le BorderLayout.

    En mettant un maximum, minimum et preferred égaux, et en utilisant un layout swing il est possible de fixer la taille des composants, mais c'est juste une combine.

  5. #5
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 909
    Billets dans le blog
    54
    Par défaut
    Sinon, il est possible de mettre le layout a null et de positionner toi-meme tes composants dans leur containeur. Ou d'utiliser un GridBagLayout mais la ca devient vite complexe. Le mieux reste probablement d'utiliser un editeur graphique/visual editor comme matisse pour Netbeans (et Eclipse ?) qui supporte le GroupLayout et ensuite de rendre la fenetre/la boite de dialogue non-redimentionnable.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  6. #6
    Membre averti
    Inscrit en
    Décembre 2003
    Messages
    65
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Décembre 2003
    Messages : 65
    Par défaut
    Citation Envoyé par gifffftane Voir le message
    Les composants swing encadrent les variations possibles, avec les notions de maximumSize, minimumSize, et preferredSize, mais ces valeurs ne sont pas respectées par tous les layouts. Elles le sont par les layouts swing, comme le BoxLayout. Je ne crois pas qu'elles le soient par le BorderLayout.
    en fait, je viens de voir qu'il y a deux minimum/maximum/preferredSize : un fourni par la classe Component et un fourni par la classe JComponent. Est-ce que les layout awt respectent les mini/maxi/prefSize de Component et les layout swing respectent les mini/maxi/prefSize de JComponent?

    Quel est le lien entre les mini/maxi/prefSize de JComponent et ceux de Component?

    merci d'avance
    mobi

  7. #7
    Membre Expert
    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
    Par défaut
    Je pense qu'il n'y a pas de différence fondamentale sur ces questions entre swing et awt.

    Concernant minimum/maximum/preferred, je pense que ces notions sont d'abord apparues sur les composants swings, et comme elles sont pratiques, Sun les a intégrées à un niveau plus général (java.awt.Component).

    La différence pourrait se trouver dans l'implication du look and feel, qui n'existe que dans swing.

    Les layouts disposent les composants selon ce qu'ils veulent : s'ils veulent mettre les composants awt tout en haut et les composants swing tout en bas, ils le peuvent.

    (en général, ils essaient de faire des choses raisonnables).

  8. #8
    Membre averti
    Inscrit en
    Décembre 2003
    Messages
    65
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Décembre 2003
    Messages : 65
    Par défaut
    Citation Envoyé par gifffftane Voir le message
    Les composants swing encadrent les variations possibles, avec les notions de maximumSize, minimumSize, et preferredSize, mais ces valeurs ne sont pas respectées par tous les layouts. Elles le sont par les layouts swing, comme le BoxLayout. Je ne crois pas qu'elles le soient par le BorderLayout.
    comment savoir quel sont les layout qui respectent les min/max/pref? j'ai regarder la javadoc qui n'est pas toujours explicite sur ce point. est-ce moi qui est mal compris?

    et dans tout ça, a quoi sert la méthode "setSize"?

  9. #9
    Membre Expert
    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
    Par défaut
    Oui, les javadocs ne sont pas toujours explicites sur ce point.

    La méthode setSize sert, par exemple, au... layout

    Elle sert également pour des composants dont il faut fixer la taille, même en présence d'un layout, parce qu'il n'est pas possible de déduire leur taille à partir de leur sous-composants.

    Par exemple le JScrollPane peut avoir un scroll de n'importe quelle taille : on l'utilise précisément pour ça, et donc on ne peut connaître sa taille par analyse de ses composants, comme pour la plupart des autres composants graphiques ; il faut donc fixer la taille de quelque chose à un moment ou à un autre, soit du scroll, soit du JScrollPane, soit même d'un des composants qui l'englobe.

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/11/2008, 09h43
  2. probleme avec l'info bulle des composant swing
    Par jeanfeu dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 19/06/2008, 15h21
  3. Crée une IHM swing ou awt avec netbeans
    Par Wilgard dans le forum NetBeans
    Réponses: 3
    Dernier message: 18/04/2007, 11h03
  4. Grosse appli avec des composants Swing ?
    Par marmotte dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 13/10/2006, 14h53
  5. Affichage instable avec les composants SWING
    Par valfajr dans le forum AWT/Swing
    Réponses: 11
    Dernier message: 05/05/2006, 00h04

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