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

2D Java Discussion :

[Graphics2D] & [JDialog] dessiner dans une ligne dan JDialog


Sujet :

2D Java

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 504
    Points : 288
    Points
    288
    Par défaut [Graphics2D] & [JDialog] dessiner dans une ligne dan JDialog
    Bonjour,
    cela parait simple, mais ce que j'ai fait ne fonctionne pas, j'ai une JDialog avec plein de JPanel contenant des JLabel, des JComboBox ... Le truc cque je veux faire un trait (plusieurs traits même) sur une partie de la JDialog,
    ce trait se trouverait présicément sur un panel (en haut de celui ci comme un border mais juste en haut)
    j'ai donc pensé au dessin.
    J'ai donc surcharger la méthode PaintComponent
    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
    public void paintComponents(Graphics graphics) {
        super.paintComponents(graphics);
        Graphics2D graphics2D = (Graphics2D) graphics ;
     
        // Test si traits initialisés ?
        if (strokes == null) {
          initStrokes(graphics2D);
        }
     
        System.out.println("PaintComponent");
        graphics2D.setStroke(strokes[LIMIT]);
        graphics2D.drawLine(150, 10, 250, 10);
     
        graphics2D.setStroke(strokes[LIMIT]);
        graphics2D.drawLine(150, 50, 250, 50);
      }
    les valeurs 150,50,250.... sont au hazard c t juste pour voir si cela fonctionnait, en tout cas je ne vois pas du tout l'affichage prévu avec le System.out.println("PaintComponent");

    Il me manque peut etre quelque chose.
    Ou il y a peut etre aussi d'autres solution pour faire un trait droit que sur un coté du panel en utilisant un border ou autre ?

    merci

  2. #2
    Membre actif Avatar de xxaragornxx
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 241
    Points : 253
    Points
    253
    Par défaut
    Tu as regardé du côté de JSeparator ?

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 504
    Points : 288
    Points
    288
    Par défaut
    je connais pas, je regarde et je te dis...
    merci

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 504
    Points : 288
    Points
    288
    Par défaut
    j'ai vu pour JSperator, mais moi je ne suis pas dans un menu, c vraiment faire un trait pour visuelement séparer des panels :
    ________________________!- - - - - - - - - - - - - - - !
    ...............................................!
    ...............................................!
    ........PANEL A...........................!PANEL B
    ...............................................!
    ...............................................!
    ________________________!- - - - - - - - - - - - - - - !
    .............................PANEL C.........................................!
    __________________________________________!

    Voila à quoi ma JDialog resemble (en gros) 3 Panel, et je veux que sur un, il y ai des ligne sur les bords (plus ou moins). - - - - -

  5. #5
    Membre actif Avatar de xxaragornxx
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 241
    Points : 253
    Points
    253
    Par défaut
    Citation Envoyé par lilou77
    j'ai vu pour JSperator, mais moi je ne suis pas dans un menu, c vraiment faire un trait pour visuelement séparer des panels :
    ________________________!- - - - - - - - - - - - - - - !
    ...............................................!
    ...............................................!
    ........PANEL A...........................!PANEL B
    ...............................................!
    ...............................................!
    ________________________!- - - - - - - - - - - - - - - !
    .............................PANEL C.........................................!
    __________________________________________!

    Voila à quoi ma JDialog resemble (en gros) 3 Panel, et je veux que sur un, il y ai des ligne sur les bords (plus ou moins). - - - - -
    Tu n'es pas du tout obligé de le mettre seulement dans un JMenu.
    Tu peux par exemple définir si tu veux une séparation horizontale ou verticale...

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 504
    Points : 288
    Points
    288
    Par défaut
    oui effectivement j'ai réussi à le mettre, par contre cela me fait une ligne continu...
    est t'il possible d'avoir une ligen en pointillé...???

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 504
    Points : 288
    Points
    288
    Par défaut
    avec la doc je crois comprendre qu'il fo que je lui définisse un look an feel ?
    BasicSeparatorUI ?
    a priori il faudrai surcharger la méthode paint ? ce serai à ce moment la que je fais mon drawLine ? (graphics2D)?

  8. #8
    Membre actif Avatar de xxaragornxx
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 241
    Points : 253
    Points
    253
    Par défaut
    Tu peux effectivement lui affecter ton propre l&f.
    Pour ceal tu peux passer par la méthode setUI(SeparatorUI ui) .

    Une des 2 sous-classes de SeparatorUI est BasicSeparatorUI.
    Celui-ci te permet juste de jouer sur la couleur (clair ou foncé) du Separator.

    Mais tu peux la surcharger et/ou regarder la source pour voir comment elle est implémentée !

    Pour ma part, ne l'ayant jamais fait, je ne pourrai pas t'en dire plus...

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 504
    Points : 288
    Points
    288
    Par défaut
    lol, merci d'avoir décoder mon post précédent, c'était du chinois...
    Merci pour ces renseignements,
    Si quelqu'un a déjà utilisé JSeparator.setUI(BasicSeparatorUI b), so peut me donner quelque renseignement pour faire un trait en pointillé...

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 504
    Points : 288
    Points
    288
    Par défaut
    Voila ce n'était pas compliqué, je met le code si jamais cela intéresse quelqu'un :
    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
     
      private class LineSeparator extends BasicSeparatorUI {
        /**
         * Initialise les type de traits.
         */
        private void initStrokes(Graphics2D graphics2D) {
          strokes = new BasicStroke[3];
     
          if (graphics2D == null) {
            graphics2D = (Graphics2D) getGraphics();
          }
     
          strokes[DEFAULT] = (BasicStroke) graphics2D.getStroke();
          strokes[LINE] = new BasicStroke(strokes[DEFAULT].getLineWidth() * 2);
          strokes[LIMIT] = new BasicStroke(strokes[DEFAULT].getLineWidth(), BasicStroke.CAP_BUTT,
              BasicStroke.JOIN_MITER, 10.0f, new float[] { 10, 5 }, 0);
        }
     
        public void paint(Graphics g, JComponent c) {
          Rectangle r = new Rectangle();
          SwingUtilities.calculateInnerArea(c, r);
     
          JSeparator s;
          if (c instanceof JSeparator)
            s = (JSeparator) c;
          else
            return;
     
          Graphics2D graphics2D = (Graphics2D)g;
          // Test si traits initialisés ?
          if (strokes == null) {
            initStrokes((Graphics2D)g);
          }
          if (s.getOrientation() == JSeparator.HORIZONTAL) {
            int midAB = r.height / 2;
            graphics2D.setStroke(strokes[LIMIT]);
            graphics2D.drawLine(r.x, r.y + midAB - 1, r.x + r.width, r.y + midAB - 1);
          } else {
            int midAD = r.height / 2 + r.y;
            graphics2D.setStroke(strokes[LIMIT]);
            graphics2D.drawLine(r.x, r.y, r.x, r.y + r.height);
          }
        }
      }
    Et bien sur dans ma JDialog :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
          JSeparator separator = new JSeparator(JSeparator.HORIZONTAL);
          LineSeparator lineSeparator = new LineSeparator();
          separator.setUI(lineSeparator);
     
          areasPanel.add(separator, gridBagConstraints7);
    pas trés compliqué...

  11. #11
    Membre actif Avatar de xxaragornxx
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 241
    Points : 253
    Points
    253
    Par défaut
    Pas mal

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

Discussions similaires

  1. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  2. Réponses: 3
    Dernier message: 29/01/2008, 12h08
  3. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  4. Comment griser une ligne dans une TListBox ?
    Par SegmentationFault dans le forum Composants VCL
    Réponses: 2
    Dernier message: 29/06/2004, 09h15
  5. copier une ligne dans une autre table
    Par BoeufBrocoli dans le forum SQL
    Réponses: 5
    Dernier message: 24/10/2003, 22h59

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