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

AWT/Swing Java Discussion :

bouton dans un JTextPane


Sujet :

AWT/Swing Java

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 43
    Points : 52
    Points
    52
    Par défaut bouton dans un JTextPane
    Bonjour,

    Je voudrais afficher a l'écran une image, tu texte évolué (c'est à dire dans plusieurs fontes différentes, avec plusieurs tailles et couleurs) et en quantité qui sera variable, avec un ou plusieurs liens (c'est à dire des boutons ou bien encore des labels).
    L'image 1 en pièces jointe illustre ce que je souhaiterais obtenir.
    Le JTextPane m'a paru idéal pour cela, et il l'est presque. En effet j'ai un décalage vertical avec les boutons ou labels par rapport au texte, ce qui est absolument affreux, esthétiquement parlant. J'ai essayé de jouer sur les setBorder et setBounds du composant, avec les alignement, spaceAbove et autres de StyleConstants, rien n'y fait ou du moins je ne parviens à rien de meilleur.
    L'image 2 illustre ce décalage qui est déplaisant.

    Quelqu'un aurait-il une idée pour régler ce petit problème, ou bien encore faire autrement et parvenir au but recherché ?
    Bien sur, je dois pouvoir récupérer l'évènement du clic sur le bouton ou label "lien".

    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.Font;
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JTextPane;
    import javax.swing.text.BadLocationException;
    import javax.swing.text.DefaultStyledDocument;
    import javax.swing.text.Style;
    import javax.swing.text.StyleConstants;
    import javax.swing.text.StyleContext;
     
     
    @SuppressWarnings("serial")
    public class MyJTextPane extends JTextPane {
     
    	private JButton btnURL = new JButton("lien");
     
     
    	public MyJTextPane() {
    		super();
     
    		DefaultStyledDocument doc = (DefaultStyledDocument) this.getDocument();
    		Style def = StyleContext.getDefaultStyleContext().getStyle(StyleContext.DEFAULT_STYLE);
     
    		Font font = new Font("Arial",Font.PLAIN,12);
     
    		this.setFont(font);
    		this.setEditable(false);
     
    		Style plain = this.addStyle("plain", def);
    		StyleConstants.setForeground(plain, Color.BLACK);
     
     
    		Style gras = this.addStyle("gras", def);
    		StyleConstants.setForeground(gras, Color.BLACK);
    		StyleConstants.setFontSize(gras, 16);
    		StyleConstants.setBold(gras, true);
     
    		Style icone = this.addStyle("icone", def);
    		StyleConstants.setIcon(icone, new ImageIcon("c:\\search2.png"));
     
    		Style btn = this.addStyle("btn", def);
    		StyleConstants.setComponent(btn, btnURL);
    		btnURL.setForeground(Color.BLUE);
    		btnURL.setPreferredSize(new Dimension(60, 20));
    		btnURL.setMaximumSize(new Dimension(60, 20));
    		btnURL.setMinimumSize(new Dimension(60, 20));
    		btnURL.setContentAreaFilled(false);
     
    		try {
    			doc.insertString(doc.getLength(), " ", icone);
    			doc.insertString(doc.getLength(), " Titre :\n", gras);
    			doc.insertString(doc.getLength(), "ceci est mon texte ! ( ", plain);
    			doc.insertString(doc.getLength(), " ", btn);
    			doc.insertString(doc.getLength(), " ) dsqfksjqdljfk", plain);
    			doc.insertString(doc.getLength(), "\naaaaaaaaaaaaaaaaaaaaaaaaaaaaa\naaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", plain);
    		} 
    		catch (BadLocationException e) {
    			e.printStackTrace();
    		}
     
    	}
     
     
    }
    Images attachées Images attachées   

  2. #2
    Membre averti Avatar de nicotine002
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 577
    Points : 409
    Points
    409
    Par défaut
    Bonjour, je suis pas sûr mais tu pourrais essayer avec un JEditorPane non? et faire en html.
    Pourquoi ca marche jamais?Vive le café!

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 43
    Points : 52
    Points
    52
    Par défaut
    Oui, j'y avais pensé. Mais comment je fais pour récupérer l'évènement du bouton HTML ?? Ce bouton doit déclancher des actions, comme l'ouverture de fenêtre, et je voudrais récupérer l'évènement à l'intérieur du code Java.

Discussions similaires

  1. Nouvelle form avec bouton dans barre taches
    Par DarkChamallo dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 17/05/2004, 20h44
  2. [BCB 5.0] Ajouter un bouton dans internet explorer
    Par GthrDns dans le forum C++Builder
    Réponses: 2
    Dernier message: 01/02/2004, 22h54
  3. Scroll automatique dans un JTextPane
    Par regbegpower dans le forum Composants
    Réponses: 9
    Dernier message: 11/11/2003, 09h24
  4. Icone/bouton dans la barre des taches...
    Par dynobremo dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 28/02/2003, 12h05
  5. Réponses: 2
    Dernier message: 31/08/2002, 14h00

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