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 :

Ligne épaisse et grandeur de text dans un JLabel


Sujet :

2D Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de ehmppowa
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 114
    Par défaut Ligne épaisse et grandeur de text dans un JLabel
    bonjour,

    est ce que c'est possible de faire un ligne de x pixel de largeur ? j'ai chercher dans la doc mais rien trouver.. Quelqu'un aurait une solution? ou avec quel methode je pourrais faire ca?

    et ma deuxieme question, est ce que c'est possible de donner une grandeur a un text d'un JLabel? si non, est ce que c'est possible avec drawString ??

    Merci

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 504
    Par défaut
    Salut
    1ere question pour faire simplement des trait regarde du coté de la classe JSeparator.
    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
          JSeparator separator = new JSeparator(JSeparator.HORIZONTAL);
          LineSeparator lineSeparator = new LineSeparator();
          separator.setUI(lineSeparator);
          myPanel.add(separator2, gridBagConstraints7);
    pour personnaliser le trait fait un setUI, sinon, tu ajoute simplement le séprator, et tu auras un trait normal horizontal...
    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
     
    /**
    * Cette classe permet de personaliser ton trait. pour l'épaiseur, en pointillé...
    **/
      private class LineSeparator extends BasicSeparatorUI {
        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);
          }
        }
      }
    2eme question tu peux biensur changer la taille de la police, en faisant un setFont.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    myLabel.setFont(new Font("Tahoma", Font.PLAIN, 12));

  3. #3
    Membre confirmé Avatar de ehmppowa
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 114
    Par défaut
    merci, la grandeur de texte je pensais bien qu'on pouvait, mais j'savais pas comment.

    Pour la ligne épaisse, ca serait pour un programme de dessin, donc j'aurais le point de départ et d'arrivé, donc elle peut etre pencher ou n'importe quoi d'autre.. j'avais penser a faire un rectangle et après lui mettre une rotation, mais j'ai pas trouver comment faire une rotation en grahpics..

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 504
    Par défaut
    si elle risque d'etre pencher, moi je te conseille de la mémoriser dans un rectangle en précisant quelle diagonale ce sera, ensuite tu la dessine dans ton paintComponent avec un drawLine() :
    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
     
      public void paintComponent(Graphics graphics) {
        super.paintComponent(graphics);
     
        Graphics2D graphics2D = (Graphics2D) graphics;
     
        int x = rectangle.x;
        int y = rectangle.y;
        int width = rectangle.width;
        int height = rectangle.height;
     
        graphics2D.setStroke(strokes[BIG_LINE]);
          // Teste si Haut Gauche ou bas droit ?
          if (diagonalNormal) {
            graphics2D.drawLine(x, y, x + width, y + height);
            // Teste si haut droit ?
          } else {
            graphics2D.drawLine(x, y + height, x + width, y);
          }
    }

  5. #5
    Membre confirmé Avatar de ehmppowa
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 114
    Par défaut
    je comprend pas trop ce code...

    la ca va me dessine qu'une ligne d'un pixel de largeur.. ? nan?

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 504
    Par défaut
    ok, oublie le setStroke, c'est lui qui définit le ype de trait que tu va tracer (en pointillé, un gros trait...) par défaut il te dessine un trait normal.
    toi tu veux dessiner une ligne, c'est ça ?
    tu sait d'ou elle part ? soit elle part d'en haut à gauche (si tu prends un rectangle), soit d'en bas à gauche ?...
    tu crée une instance de rectangle, et tu lui passe le point x, y qui sera en haut à gauche. je sais pas si ce que j'ai ecris est compréhensible, mais dessine un rectangle sur une feuille et di toi que toi quant tu cree ce rectangle tu dois lui donner le point en haut a gauche, l'une des diagonale de ton rectangle représente ta ligne.
    tu as donc deux choix car 2diagonale.
    donc une fois que tu as crée ton rectangle avec x,y widh et height tu peut savoir d'ou par ta ligne, et tu peux la dessiner. avec draxwLine(xdeDépart, yDeDepar, xD'arrivé, yD'arrivé).

  7. #7
    Membre confirmé Avatar de ehmppowa
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 114
    Par défaut
    oui, ca y a pas de soucis de dessiner une ligne d'1 pixel de largeur. Mais ce que j'aimerais faire, c'est dessiner une ligne(plutot une bar) de 4 pixel de largeur.. un trait bien gras, bien épais..

    dsl c'est peut etre moi qui me suis mal exprimer au début..

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 504
    Par défaut
    ok, dans ce cas là tu as besoin du setStroke !!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
            BasicStroke stroke = (BasicStroke) graphics2D.getStroke();
            graphics2D.setStroke(new BasicStroke(stroke.getLineWidth() * 4));
    graphics2D.drawLine....
    voila et pour grossir le trait tu augmente le 4.

  9. #9
    Membre confirmé Avatar de ehmppowa
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 114
    Par défaut
    Merci !! c'est parfait !

    bisous a bientot

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 19/12/2013, 15h25
  2. Saisir du texte dans un JLabel ?
    Par bounadalvidal dans le forum Débuter
    Réponses: 5
    Dernier message: 17/04/2011, 10h33
  3. Réponses: 2
    Dernier message: 21/06/2007, 14h40
  4. Afficher sur plusieur ligne du texte dans une balise <td>
    Par G_Kill dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 02/12/2006, 09h50
  5. Plusieurs lignes de texte dans une variable texte
    Par Loko dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 15/12/2005, 13h51

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