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

Interfaces Graphiques en Java Discussion :

JTextPane, Ecrire du texte, Insérer images, et le tout dans une JScroll


Sujet :

Interfaces Graphiques en Java

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2011
    Messages
    260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 260
    Par défaut JTextPane, Ecrire du texte, Insérer images, et le tout dans une JScroll
    Bonjour, alors voilà,


    j'ai du texte à mettre en forme avec des images à insérer entre certains paragraphes.


    J'ai commencé par utiliser un JTextPane, mais il s'avérait impossible d'insérer une image entre 2 paragraphes, mais seulement à la fin du texte (à la fin du JTextPane).

    J'ai donc décidé d'utiliser plusieurs JTextPane, et de créer séparemment des panels d'images à insérer entre chaque JTextPane.

    J'ai alors créer un JTextPane principal. J'ai fait un BoxLayout sur celui-ci, et je lui ai ajouté tous les JTextPane secondaires ainsi que les panels d'images.

    Ensuite j'ai voulu tout mettre dans une scroll verticale.

    J'obtient alors des erreurs:
    - d'une part les images sont écrasées
    - d'autre part seule une partie de l'ensemble du texte (ensemble des JTextPanes) s'affiche à l'écran, et la scroll est inactive (je ne peux pas descendre plus bas que l'écran).
    regardez ma photo pièce jointe c'est affreux !

    Voici l'ensemble du code de ma Jframe (tout ne concerne pas ce problème):

    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
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
     
    import java.awt.*;
     
     
    public class ViewDossierTor extends JFrame
    {
     
     
     
     
     
    	public ViewDossierTor(Controller controller)
    	{
     
    		this.setTitle("Compte rendu du dossier");
    	  this.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);      
    	  	this.setSize(w, h);
     
    		JScrollPane scroll = new JScrollPane(getPanel());
     
    		this.getContentPane().add(scroll);
     
    	}
     
     
     
    	public JTextPane getPanel()
    	{
     
    		JTextPane jTextPane = new JTextPane();
     
    		jTextPane.setLayout(new BoxLayout(jTextPane , BoxLayout.Y_AXIS));
     
    		jTextPane.add(getPanel1());
    		jTextPane.add(frame1.getContentPane());
    		jTextPane.add(getPanel2());
    		jTextPane.add(getPanel3());
    		jTextPane.add(getPanel4());
    		jTextPane.add(getPanel5());
     
    		return jTextPane;
    	}
     
     
     
    	public JTextPane getPanel1 ()
    	{
     
    		JTextPane jTextPane1 = new JTextPane();
        	jTextPane1.setEditable(true);
     
        	//image1 = new Image1();
     
     
        	// définition des styles
        	Style defaut = jTextPane1.getStyle("default");
        	      StyleConstants.setFontSize(defaut, 13);
          		  StyleConstants.setFontFamily(defaut, "TimesRoman");
        	Style style1 = jTextPane1.addStyle("style1", defaut);
        	      StyleConstants.setFontFamily(style1, "TimesRoman");
        	      StyleConstants.setFontSize(style1, 16);
        	      StyleConstants.setBold(style1, true);
            Style style2 = jTextPane1.addStyle("style2", jTextPane1.getLogicalStyle());
    	          StyleConstants.setBold(style2, true);
    	          StyleConstants.setFontSize(style2, 14);
    	    Style style3 = jTextPane1.addStyle("style3", jTextPane1.getLogicalStyle());
                  StyleConstants.setBold(style3, true);
                  StyleConstants.setFontSize(style3, 13);        
     
     
        	      //StyleConstants.setForeground(style1, Color.BLACK);
     
     
        	String s1 = "I- PREAMBULE\n\n";
        	String s2 = "    La société ACSON a été mandatée par Monsieur "+ s_nom + " afin de réaliser l'étude acoustique de sa maison située "+ s_rue +" à "+ s_ville+ " ("+ s_codePostal+ ") .\nCette étude se fait sur plans et à partir du cahier des charges du constructeur. Elle permet de définir les isolements acoustiques des bâtiments d'habitation par rapport à l'arrêté du 30 mai 1996 en vigueur.\nNous proposerons éventuellement les matériaux à mettre en oeuvre en façade afin que les isolements soient respectés d'un point de vue règlementaire.\n\n\n";
     
     
        	StyledDocument sDoc = (StyledDocument)jTextPane1.getDocument();
     
        	//jTextPane1.insertIcon( new ImageIcon("images/norme2.jpg"));
        	//jTextPane1.insertIcon( new ImageIcon("images/norme4.jpg"));
     
     
     
        	try 
        	{
        	      int pos = 0;
        	      sDoc.insertString(pos, s1, style1);pos+=s1.length();
        	      sDoc.insertString(pos, s2, defaut);pos+=s2.length();
        	    	}	       
     
     
         	catch (BadLocationException e) 
        	{ 
         	}
     
    	    return jTextPane1;
        }
     
     
     
    	public class Image1 extends JPanel
    	{ 
    	    String image1; // image de fond
     
    	    public Image1() 
    	    { 
    	         this.image1 = "images/tableau_3.jpg"; // image de fond
    	    }
     
    	    public void paintComponent(Graphics g)
    	    {
    	         g.drawImage(new ImageIcon(Toolkit.getDefaultToolkit().getImage(image1)).getImage(), 0, 0, this.getWidth(), this.getHeight(), null);
    	    }
    	}
     
     
     
     
    	public class Frame1 extends JFrame 
    	{
     
    	   private JPanel ouest = new JPanel();
    	   private JPanel est = new JPanel();
     
    	   public Frame1() 
    	   {
    		  Image1 image1 = new Image1();
    	  	  //ouest.setBackground(Color.BLUE);
    	      //add(ouest, BorderLayout.WEST);
    	      //add(sud, BorderLayout.SOUTH);
    	      add(image1, BorderLayout.CENTER);
     
    	      //add(est, BorderLayout.EAST);
    	      setVisible(true);
    	   }
    	}  
     
     
     
     
     
    	public JTextPane getPanel2 ()
    	{
     
    		JTextPane jTextPane2 = new JTextPane();
        	jTextPane2.setEditable(true);
     
     
        	// définition des styles
        	Style defaut = jTextPane2.getStyle("default");
        	      StyleConstants.setFontSize(defaut, 13);
          		  StyleConstants.setFontFamily(defaut, "TimesRoman");
        	Style style1 = jTextPane2.addStyle("style1", defaut);
        	      StyleConstants.setFontFamily(style1, "TimesRoman");
        	      StyleConstants.setFontSize(style1, 16);
        	      StyleConstants.setBold(style1, true);
            Style style2 = jTextPane2.addStyle("style2", jTextPane2.getLogicalStyle());
    	          StyleConstants.setBold(style2, true);
    	          StyleConstants.setFontSize(style2, 14);
    	    Style style3 = jTextPane2.addStyle("style3", jTextPane2.getLogicalStyle());
                  StyleConstants.setBold(style3, true);
                  StyleConstants.setFontSize(style3, 13);        
     
     
          	String s19 = "    2.2- Isolement contre les bruits des transports terrestres\n\n";
        	String s20 = "La détermination de l'isolement acoustique minimal des bâtiments d'habitation contre les bruits des transports terrestres est définie par l'arrêté du 30 mai 1996.\n\n";
        	String s21 = "        2.2.1- Classement des infrastructures de transports terrestres\n\n";
        	String s22 = "Le classement des infrastructures de transports terrestres et la largeur maximale des secteurs affectés par le bruit de part et d'autre de l'infrastructure, sont définis en fonction des niveaux sonores de référence, dans le tableau suivant:\n\n";
     
        	StyledDocument sDoc = (StyledDocument)jTextPane2.getDocument();
     
        	try 
        	{
        	      int pos = 0;
     
        	      sDoc.insertString(pos, s19, style2);pos+=s19.length();
        	      sDoc.insertString(pos, s20, defaut);pos+=s20.length();
        	      sDoc.insertString(pos, s21, style2);pos+=s21.length();
        	      sDoc.insertString(pos, s22, defaut);pos+=s22.length();
        	}	       
     
     
     	    catch (BadLocationException e) 
    	    { 
     	    }
     
    	    return jTextPane2;
    	}
     
     
     
    }
    Images attachées Images attachées  

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

Discussions similaires

  1. [WD-2003] Insérer automatiquement un lien hypertexe dans une image
    Par ybezier dans le forum VBA Word
    Réponses: 1
    Dernier message: 29/07/2012, 20h54
  2. Réponses: 3
    Dernier message: 11/06/2012, 05h41
  3. Réponses: 13
    Dernier message: 06/04/2012, 15h57
  4. insérer une image comme objet ole dans une table
    Par Loutron dans le forum Modélisation
    Réponses: 4
    Dernier message: 29/12/2011, 19h11
  5. ecrire un texte a partir d'un point dans richedit
    Par ramanov dans le forum Langage
    Réponses: 10
    Dernier message: 07/04/2010, 13h30

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