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 :

Zone de saisie de texte formaté dans Swing


Sujet :

AWT/Swing Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 40
    Points : 26
    Points
    26
    Par défaut Zone de saisie de texte formaté dans Swing
    bonjour,

    Je suis débutant en SWING et j'aimerai savoir si quelqu'un a deja développé un composant SWING, donc en JAVA, autorisant la saisie de texte formaté (un peu comme celui proposé par la fenetre "ouvrir une nouvelle discussion" de ce forum même s'il s'agit de PHP) avec les fonctionnalités classiques de formattage :
    - changement de taille du texte
    - changement de police
    - changment de police
    -insertion d'images...
    ...

    Peut-etre le plus simple est il de coller de l'HTML (contenant du Javascript similaire à celui de ce forum) dans un composant SWING ?

    Merci d'avance.

    mugwump

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 429
    Points : 475
    Points
    475
    Par défaut
    Bonjour,

    Quand ton utilisateur cliquera sur "gras", souhaites-tu que le texte sélectionné devienne réellement gras, ou bien juste insérer des balises ?

    Nicolas

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 429
    Points : 475
    Points
    475
    Par défaut
    Voici un code extrait d'un projet plus gros : une fenêtre contenant un texte, avec un bouton "surlignement en jaune", et un bouton "annulation du surlignement". Cela peut peut-être te donner des idées...

    Nicolas

    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
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    // Nicolas_75, 10 juillet 2007
    // http://www.developpez.net/forums/showthread.php?p=2283513
    // appeler le fichier Exemple097_StyledDocumentAvecSurlignage.java
     
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.text.*;
     
    public class Exemple097_StyledDocumentAvecSurlignage extends JFrame {
     
        private JTextPane textpane = new JTextPane(); // contient le texte
        private StyledDocument sdoc; // StyledDocument correspondant au JTextPane
     
        // SimpleAttributeSet pour le texte surligné ou non :
        private SimpleAttributeSet yellowHighlighted = new SimpleAttributeSet();
        {
            StyleConstants.setBackground(yellowHighlighted, Color.yellow);
        }
        private SimpleAttributeSet whiteHighlighted = new SimpleAttributeSet();
     
        // constructeur :
        public Exemple097_StyledDocumentAvecSurlignage() {
     
            // caractéristiques générales de la frame :
            this.setResizable(false);
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
            // JTextPane et StyledDocument contenant le texte :
            String text = "La terre est bleue comme une orange...\n\nLa terre est bleue comme une orange\nJamais une erreur les mots ne mentent pas\nIls ne vous donnent plus à chanter\nAu tour des baisers de s'entendre\nLes fous et les amours\nElle sa bouche d'alliance\nTous les secrets tous les sourires\nEt quels vêtements d'indulgence\nÀ la croire toute nue.\n\nLes guêpes fleurissent vert\nL'aube se passe autour du cou\nUn collier de fenêtres\nDes ailes couvrent les feuilles\nTu as toutes les joies solaires\nTout le soleil sur la terre\nSur les chemins de ta beauté.\n\nPaul ELUARD, L'Amour la poésie (1929)";
            sdoc = textpane.getStyledDocument();
            try {
                sdoc.insertString(0, text, null);
            } catch (BadLocationException e) { e.printStackTrace(); }
     
            // JPanel contenant les deux boutons :
            JPanel buttonPanel = new JPanel();
     
            // bouton de surlignement en jaune :
            JButton button1 = new JButton("surligne sélection en jaune");
            button1.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    if ((!(sdoc==null))&&(!(textpane.getSelectedText()==null))) {
                        sdoc.setCharacterAttributes(textpane.getSelectionStart(), textpane.getSelectedText().length(), yellowHighlighted, false);
                    }
                }
            });
     
            // bouton d'annulation du surlignement en jaune :
            JButton button2 = new JButton("enlève le surlignement de la sélection");
            button2.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    if ((!(sdoc==null))&&(!(textpane.getSelectedText()==null))) {
                        sdoc.setCharacterAttributes(textpane.getSelectionStart(), textpane.getSelectedText().length(), whiteHighlighted, true);
                    }
                }
            });
     
            // mise en place du contenu de la fenêtre :
            buttonPanel.add(button1);
            buttonPanel.add(button2);
            this.textpane.setEditable(true);
            JScrollPane scroll = new JScrollPane(textpane);
            scroll.setPreferredSize(new Dimension(300,200));
            JPanel bigPanel = new JPanel();
            bigPanel.setLayout(new BorderLayout());
            bigPanel.add(buttonPanel, BorderLayout.CENTER);
            bigPanel.add(scroll, BorderLayout.SOUTH);
            this.getContentPane().add(bigPanel, BorderLayout.SOUTH);
     
            // affichage de la frame :
            this.pack();
            this.setVisible(true);
        }
     
        // "main" de démonstration
        public static void main(String[] args) {
            new Exemple097_StyledDocumentAvecSurlignage();
        }
    }

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 40
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par Nicolas_75
    Bonjour,

    Quand ton utilisateur cliquera sur "gras", souhaites-tu que le texte sélectionné devienne réellement gras, ou bien juste insérer des balises ?

    Nicolas
    Peu importe Nicolas, je souhaite le truc le plus naturel /intuitif possible. Si tu as le cas 'insertion de balise', alors il faut une prévisualisation pour vérifier la tete du message car c'est avant un envoi de mail (formaté)

    Merci
    Didier

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 429
    Points : 475
    Points
    475
    Par défaut
    OK. as-tu vu le code que je t'ai proposé ci-dessus ? Cela peut être une base de départ. Il te resterait à l'améliorer, etc...

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 40
    Points : 26
    Points
    26
    Par défaut
    Oiuas, je viens de le voir, c'est une bonne idée pour commencer même si je trouve le rendu moins sympa que du Javascript. bon, je débute en SWING alors je ne sais pas ce qsui est possible .
    Mais si je dois rajouter tous les controles/évenemments pour ressembler à ce qui existe en HTML ca risque de me prendre du temps ?
    N'est-il pas possible d'afficher dans mon SWING du HTML proposant le code javascript

    but étant de proposer une application (client lourde) qui permet (en autres) à l'utilisateur de saisir un message formaté avant de l'envoyer par mail à une population donnée ! Je ne voudrais pas que mes utilsiateurs soient décus par le look !

    Mon
    Merci

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 429
    Points : 475
    Points
    475
    Par défaut
    je trouve le rendu moins sympa que du Javascript. [...] Je ne voudrais pas que mes utilsiateurs soient décus par le look !
    Le "look" est entièrement adaptable pour un rendu très élégant. J'ai juste donné un exemple brut.

    Mais si je dois rajouter tous les controles/évenemments pour ressembler à ce qui existe en HTML ca risque de me prendre du temps ?
    Oui.

    N'est-il pas possible d'afficher dans mon SWING du HTML proposant le code javascript
    Probablement que si, puisqu'on peut faire un fureteur Internet complet en Java. Mais je ne suis pas compétent pour répondre.

    Nicolas

  8. #8
    Membre à l'essai
    Inscrit en
    Octobre 2003
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 17
    Points : 17
    Points
    17
    Par défaut
    Merci pour le bout de code, c'est exactement ce que je cherchais pour un exemple de sélection et de mise en forme d'un texte. Merci beaucoup.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 429
    Points : 475
    Points
    475
    Par défaut
    Tout cela date un peu, mais si cela a pu être utile, j'en suis ravi.

    Nicolas

Discussions similaires

  1. Texte formaté dans RichEdit & DBRichEdit
    Par dem dans le forum Bases de données
    Réponses: 6
    Dernier message: 16/03/2021, 20h05
  2. Zone de saisie de texte
    Par Fred_Climber dans le forum C++
    Réponses: 4
    Dernier message: 30/12/2007, 16h50
  3. Rich text format dans db2
    Par machipot dans le forum DB2
    Réponses: 2
    Dernier message: 11/09/2007, 23h00
  4. Problème pour ajouter un texte automatique dans un zone de saisie de texte
    Par koKoTis dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 21/08/2006, 16h03
  5. comment mettre du texte formaté dans une frame?
    Par afrikha dans le forum GTK+ avec C & C++
    Réponses: 5
    Dernier message: 09/10/2005, 14h55

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