Accueil > Forum > > > > Perdue dans la syntaxe JTextPane et html
Perdue dans la syntaxe JTextPane et html
jeudi 20 mars 2008 à 16:51:19 |
Perdue dans la syntaxe JTextPane et html

Fridimette
|
Bonjour, Je bosse en ce moment sur un File Printer en java : j'ai des parties fixes et donc j'utilise du code HTML pour la mise en forme => donc oui JTextPane est mon ami ! Cependant, j'ai cherché comment ouvrir une page en .html dans mon petit programme java et l'afficher sans les balises (cad comme dans un web browser): mais là je suis perdue ! Je vous envois les parties cruciales de mon code: --> début code : publicclass FileAfficher extends JFrame { private JTextPane texte; privateboolean texteModifie = false; private String reponse;
publicstaticvoid main(String[] args){ JFrame.setDefaultLookAndFeelDecorated(true); JDialog.setDefaultLookAndFeelDecorated(true); new FileAfficher(); } FileAfficher(){ super("File Printer"); setSize(new Dimension(800, 800)); setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); addWindowListener(new WindowAdapter(){ publicvoid windowClosing(WindowEvent evt){ quitter(); } }); texte = new JTextPane(); texte.setContentType("text/html"); HTMLEditorKit k = new HTMLEditorKit(); HTMLDocument doc = (HTMLDocument)k.createDefaultDocument(); texte.setEditorKit(k); texte.setDocument(doc); //texte.setFont(new Font("Monospaced", Font.PLAIN, 12)); texte.setBackground(Color.WHITE); texte.addKeyListener(new KeyAdapter(){ publicvoid keyTyped(KeyEvent evt){ texteModifie = true; } }); getContentPane().add(new JScrollPane(texte)); setJMenuBar(barreMenus()); setVisible(true); } private JMenuBar barreMenus(){ [...] menu.addSeparator(); JMenuItem information = new JMenuItem("Information"); menu.add(information); information.addActionListener(new ActionListener(){ publicvoid actionPerformed(ActionEvent e){ reponse = JOptionPane.showInputDialog("Nom du centre hospitalier?"); try{ FicheRecapi(reponse); texteModifie =true; }catch(IOException e1){ // TODO Auto-generated catch block e1.printStackTrace(); }
} }); return barre; } privatevoid FicheRecapi(String reponse)throws IOException{ String[] initString = {/* ... fill array with initial text ...*/}; Style defaut = texte.getStyle("default"); Style as = texte.addStyle("stylePerso",defaut);
//SimpleAttributeSet as = new SimpleAttributeSet(); StyleConstants.setFontFamily(as, "Monospaced"); StyleConstants.setFontSize(as, 20); StyleConstants.setAlignment(as, 1); StyledDocument doc = texte.getStyledDocument(); //Load the text pane with styled text. try{
//insertion de l'entête de la Fiche Récapitulative qui reste inchangée //texte.insertIcon(new ImageIcon("logo_biotech.jpg"));
String file ="/home/fripette/Desktop/FilePrinter/enteteFicheRecap.html"; FileReader enteteFicheRecap= new FileReader(file);
doc.insertString(doc.getLength(),String.valueOf(enteteFicheRecap),as);
/**concernant la partie variable de cette Fiche for (int i=0; i < initString.length; i++) { doc.insertString(doc.getLength(), initString[i],as); }**/ //insertion de la fin de la Fiche Récapitulative qui reste inchangée String filename ="/home/fripette/Desktop/FilePrinter/finFicheRecap.html"; FileReader finFichRecap= new FileReader(filename); doc.insertString(doc.getLength(),String.valueOf(finFichRecap),as); //doc.getStyle(as));
} catch(BadLocationException ble){ System.err.println("Couldn't insert initial text into text pane."); } } }
--> Fin du code. A quoi servent les lignes suivantes : Style defaut = texte.getStyle("default"); Style as = texte.addStyle("stylePerso",defaut);
//SimpleAttributeSet as = new SimpleAttributeSet(); StyleConstants.setFontFamily(as, "Monospaced"); StyleConstants.setFontSize(as, 20); StyleConstants.setAlignment(as, 1); StyledDocument doc = texte.getStyledDocument();en effet j'ai précisé au début : HTMLEditorKit k = new HTMLEditorKit(); HTMLDocument doc = (HTMLDocument)k.createDefaultDocument(); et je pensais que c'était suffisant mais je retrouve à chaque fois le StyledDocument ! Enfin : comment ajouter la page que j'ai génére dans le JTextPane : parce que partout ce que je lis (peut etre que je lis mal voir sans aucun doute): ils ajoutent le HTML dans le StyledDocument doc grâce à la méthode insertString. mais chez moi ca marche pas! En gros, au vu de mon code, quel est l'étape juste apres pour afficher la page html dans le JtextPane si la méthode insertString n'est pas la bonne. Merci beaucoup pour votre aide parce que je suis vraiment perdue !
|
|
vendredi 21 mars 2008 à 12:38:18 |
Re : Perdue dans la syntaxe JTextPane et html

Fridimette
|
Bon petite évolution : mon nouveau soucis : le remplissage de mon JTextPane ne se fait pas dans la même dans le main (endroit de la définition/l'initialisation de mon JTextPane) En effet, en fonction des selections de l'utilisateur dans la barre de Menu: la page hmtl appropriée va se charger dans le JTextPane. (donc page blanche au début puis en fonction de l'item sélectionné chargement de la page). publicclass FileAfficher extends JFrame { private JTextPane texte; privateboolean texteModifie = false; private String reponse; private HTMLDocument doc;
publicstaticvoid main(String[] args){ JFrame.setDefaultLookAndFeelDecorated(true); JDialog.setDefaultLookAndFeelDecorated(true); new FileAfficher(); } FileAfficher(){ super("File Printer"); setSize(new Dimension(800, 800)); setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); addWindowListener(new WindowAdapter(){ texte = new JTextPane(); texte.setContentType("text/html"); HTMLEditorKit k = new HTMLEditorKit();
//L'unité de base de la structure est un Element, qui a un ensemble d'attributs. //Les éléments st de natures différentes suivant qu'on a affaire un texte HTML : html, body, p, content, etc... doc = (HTMLDocument)k.createDefaultDocument(); texte.setEditorKit(k); texte.setDocument(doc);
Style defaut = texte.getStyle("default"); Style as = texte.addStyle("stylePerso",defaut); StyleConstants.setFontFamily(as, "Monospaced"); StyleConstants.setFontSize(as, 20); StyleConstants.setAlignment(as, 1); StyledDocument docStyled = texte.getStyledDocument();
texte.setBackground(Color.WHITE);
texte.addKeyListener(new KeyAdapter(){ publicvoid keyTyped(KeyEvent evt){ texteModifie = true; } }); getContentPane().add(new JScrollPane(texte)); setJMenuBar(barreMenus()); setVisible(true); } private JMenuBar barreMenus(){ [.....] menu.addSeparator(); JMenuItem information = new JMenuItem("Information"); menu.add(information); information.addActionListener(new ActionListener(){ publicvoid actionPerformed(ActionEvent e){ String reponse = JOptionPane.showInputDialog("Nom du centre hospitalier?"); /* * String nomCentre= JOptionPane.showInputDialog("Nom du centre hospitalier: "); * String idCentre= JOptionPane.showInputDialog("Identifiant du centre hospitalier: "); * String nomPreleveur= JOptionPane.showInputDialog("Préleveur: "); * String datePrelev=JOptionPane.showInputDialog("Date de prélèvement:"); * String heureArrivee=JOptionPane.showInputDialog("Heure d'arrivée:"); * String heureDepart=JOptionPane.showInputDialog("Heure de départ:"); * int numeroPage= JOptionPane.showInputDialog("Numero de fiche:"); */ try{ FicheRecapi(reponse); /* * Fiche(nomCentr,nomPreleveur,datePrelev,heureArrivee,heureDepart); */ texteModifie =true; }catch(IOException e1){ // TODO Auto-generated catch block e1.printStackTrace(); } } }); return barre; } privatevoid FicheRecapi(String reponse)throws IOException{
String filename ="/home/fripette/workspace/FilePrinter/finFicheRecap.html"; texte.setText(filename); Donc lorsque je clique sur l'item "information" que je rentre une réponse bidon (pour le moment après cette information me sera utile ) . La page finFicheRecap.html devrait se charger mais il n'y a rien et pas de message d'erreur dans la console !! J'ai donné le lien absolu et le script java se trouve aussi dans FilePrinter. Des idées ?
|
|
jeudi 27 mars 2008 à 10:16:34 |
Re : Perdue dans la syntaxe JTextPane et html

Fridimette
|
Bon je vous tiens au courant de mon avancé et des problèmes rencontrés. Peut-être que quelqu'un se trouvera dans mon cas un jour et qu'un autre quelqu'un pourra peut etre m'aider à avancer (maintenant que mon projet est de plus en plus clair). Je génère des bouts de texte en html que j'ajoute à un fichier html final qui sera affiché dans le JEditorPane : FileAfficher() { super("File Printer"); setSize(new Dimension(800, 800)); setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent evt) { quitter(); } });
texte = new JEditorPane(); texte.setContentType("text/html"); texte.putClientProperty(JEditorPane.HONOR_DISPLAY_PROPERTIES, Boolean.TRUE);
StyleSheet myStyleSheet = new StyleSheet(); myStyleSheet.addRule("body {font: 20px Dialog; color: blue}"); myStyleSheet.addRule("p {font: 20px Serif}");
HTMLEditorKit k = (HTMLEditorKit)(texte.getEditorKitForContentType("text/html")); k.setStyleSheet(myStyleSheet); texte.setEditorKit(k);
Document doc = texte.getDocument(); texte.setDocument(doc); texte.setBackground(Color.WHITE);
getContentPane().add(new JScrollPane(texte)); setJMenuBar(barreMenus()); setVisible(true); private void FicheRecapi(String nomCentre,String idCentre,String nomPreleveur,String datePrelev,String heureArrivee, String heureDepart,String numeroPage) throws IOException{
//Partie concernant l'entête non variable de cette Fiche /* Ouverture des flux */
FileInputStream debutfilename =new FileInputStream("/home/fripette/workspace/FilePrinter/enteteFicheRecap.html"); FileOutputStream fichierFinal = new FileOutputStream("/home/fripette/workspace/FilePrinter/FinalFicheRecap.html");
/* Lecture par segment de 0.5Mo */ byte buffer[]=new byte[512*1024];
/* Ecriture du début du fichier dans le fichier final */ WriteHTML(debutfilename,fichierFinal,buffer,0);
/* Fermeture des flux */ debutfilename.close();
/*Partie concernant la partie variable de cette Fiche*/
/* Ecriture des données variables dans un fichier qi va être relu après */ FileWriter milieufilename =new FileWriter("/home/fripette/workspace/FilePrinter/milieuFicheRecap.html");
String intro="Codification des échantillons prélevés"; milieufilename.write(intro);
String baliseDebut="<br><br><TABLE cols=\"3\" colspan=\"3\" width=\"75%\">"; milieufilename.write(baliseDebut);
String borneDebut="1.";
String borneDEBUT=borneDebut+datePrelev+"."+idCentre+"."+numeroPage;
String borneFin=""; String borneFIN=borneFin+datePrelev+"."+idCentre+"."+numeroPage;
String un= "<TR><TD width=\"40%\"align=\"left\">"; String trois="</TD><TD width=\"10%\" align=\"center\">à</TD><TD width=\"40%\" align=\"right\">"; String cinq="</TD></TR>";
for(int repetition=0; repetition<=9;repetition++){ String reslt=un+borneDEBUT+trois+borneFIN+cinq; milieufilename.write(reslt); }
String baliseFin="</TABLE><br><br>";
milieufilename.write(baliseFin); milieufilename.close();
/* Ecriture de la partie variable dans le fichier final */ FileInputStream milieu =new FileInputStream("/home/fripette/workspace/FilePrinter/milieuFicheRecap.html"); byte buffer3[]=new byte[512*1024]; WriteHTML(milieu,fichierFinal,buffer3,0);
//Partie concernant la partie finale non variable de cette Fiche FileInputStream finfilename =new FileInputStream("/home/fripette/workspace/FilePrinter/finFicheRecap.html"); byte buffer2[]=new byte[512*1024]; WriteHTML(finfilename,fichierFinal,buffer2,0);
/* Fermeture des flux */ finfilename.close(); fichierFinal.close();
//IMPORTANT :pour insérer une page .html dans le JTextPane texte.read(fichierFinal,doc); FileInputStream ficheFinal = new FileInputStream("/home/fripette/workspace/FilePrinter/FinalFicheRecap.html");
// au final : on relit le fichier final en .html dans lequel j'ai ajouté mes bouts de .html texte.read(ficheFinal,doc);
}Bon ce que j'ai essayé de faire c'est : ajouter un logo : mais j'ai mis le source dans le code html mais celui ci n'est pas pris en compte par le JTextPane (ou JEditorPane): <!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <body> <table cols="2" width="80%" > <TR> <TD ALIGN="LEFT" width="30%"> <IMG src="/home/fripette/workspace/FilePrinter/logo.jpg" style="height:100%"> </TD> <TD ALIGN="CENTER" width="60%" bgcolor="#C0C0C0"> Fiche Récapitulative des prél èvements</TD> </TR> <TR> <TD></TD> De plus j'essais de mettre en forme mon formulaire mtnt: affiner la police et la taille de celle ci. (par en bleu au début avec le StyleSheet). Autre chose que j'aimerai faire c'est rajouté/complété ma partie variable : en mettant une partie de type combobox dans la variable borneDEBUT et borneFIN. UN exemple : si ma borneDEBUT est 1. .250308.GRA.01. Dans l'espace blanc j'aimerai avoir un combobox avec différents choix : exemple de codes internes : EBM;LRS1,LRS2 .... J'espère avoir été plus claire! Help !
|
|
Cette discussion est classée dans : texte, string, html, doc, jtextpane
Répondre à ce message
Sujets en rapport avec ce message
Un Zolie text html dans mes JTextPane [ par DirigeableMoue ]
Coucou de thailande ou il fait chaud mais ou il n y a pas de bouquins sur java.J ai donc une fenetre avec un text pane et j affiche un texte au cour d
Caret et Jtextpane [ par lechiconeur ]
Bonjour, j'ai encore un souci. J'ai un JTextEditor qui contient du texte formaté grace à des balises HTML. J'aimerai récupérer la position du curseur
afficher un page html dans une zone texte [ par mahdifsegs ]
bonjour a tous, je veut afficher une page web en arabe avec le codage Utf-8 dans un jEditorPane. j'ai arriver a faire l'affichage du page en utilisan
Graphics HTML [ par didoux95 ]
Bonjour à tous .. Est ce qu'il est possible d'écrir un code HTML avec un Graphics. Par exemple la chaine "mon texte" écrirait le texte "mon texte" sou
Style de formatage dans un JTextPane / Problème [ par heavenboy ]
Bonjour,je vous explique la situation.J'ai créer une fenêtre qui contient entre autre un JScrollPane, lui même contenant uniquement un JTextPane. Une
imprimer texte [ par didoux95 ]
Bonjour à tous.j'essay d'ajouter une fonction d'impression à mon application. Pour cela, j'utilise le package "java.awt.print" (PrinterJob).j'ai reali
JTextPane [ par didoux95 ]
Bonjour a tous.J'utilise dans mon application un JTextPane pour saisir du texte. J'ai choisi un JTextPane afin de pouvoir coloré le texte de différent
Sauter une ligne dans un JButton [ par mammnon ]
Bonjour à tous. Tout est le titre? non pas vraiment. J'arrive à faire sauter une ligne dans mon JButton en utilisant du code html. CEPENDANT, pour un
Prob avec un Editeur html [ par tiepeurfou ]
bonjour a tous,je suis en train de créer un editeur HTML WISIWIG en ligne et j'ai quelques problemes, j'utilise un JTextPane avec un HTMLEditorKit pou
Recherche de texte dans un JTextPane [ par lechiconeur ]
Bonjour. Voila mon problème. J'ai un JtextPane (ToolBarExemple.pane) aux format html dans lequel j'aimerai rechercher une chaîne de caractère. [code=j
Livres en rapport
|
Derniers Blogs
[WF4] UN BINDING ACTIVITY/ACTIVITYDESIGNER QUI PASSE MAL?[WF4] UN BINDING ACTIVITY/ACTIVITYDESIGNER QUI PASSE MAL? par JeremyJeanson
Certain d'entre vous on peut être vécu cette situation embarrassante après quelques temps passer avec WF4 : Au début avec mon " ActivityDesigner" , tout allait bien. Et puis un jour j'ai au des problèmes de " Binding" . Alors nous sommes allé sur le site ...
Cliquez pour lire la suite de l'article par JeremyJeanson MYTIC - SHAREPOINT 2010 : DéJà UN MYTHE MICROSOFT ?MYTIC - SHAREPOINT 2010 : DéJà UN MYTHE MICROSOFT ? par junarnoalg
La prochaine session de MyTIC aura lieu à Namur, le 23 mars prochain. Pendant presque une heure, nous parlerons de SharePoint 2010. Voici un aperçu du programme.
Accueil : 17h30 Début de la session : 18h00 - Les nouvelles int...
Cliquez pour lire la suite de l'article par junarnoalg [MIX10] KEYNOTE DEUXIèME JOURNéE - INTERNET EXPLORER 9, HTML5, VISUAL STUDIO 2010, ODATA[MIX10] KEYNOTE DEUXIèME JOURNéE - INTERNET EXPLORER 9, HTML5, VISUAL STUDIO 2010, ODATA par cyril
Le deuxième keynote du mix fut très riche en contenu. Internet Explorer 9 Juste un après le lancement de Internet Explorer 8, Microsoft a dévoilé les nouveautés de Internet Explorer 9. Désormais, IE supportera HTML5, SVG et CSS3. L'élément ...
Cliquez pour lire la suite de l'article par cyril
Forum
LOG4JLOG4J par betty555
Cliquez pour lire la suite par betty555
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|