[JTextPane] Perdue dans la syntaxe et le html
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 !
Je sais qu'il y a déjà plusieurs discussions sur le forum à ce propos et je les ai parcouru.
Cependant, j'ai cherché dans la doc (et vos messages) comment ouvrir et interpréter du code html dans mon petit programme java : mais là je suis perdue !
A quoi sert les lignes suivantes :
Code:
1 2 3
|
HTMLEditorKit k = new HTMLEditorKit();
HTMLDocument doc = (HTMLDocument)k.createDefaultDocument(); |
pourquoi et quand dois-je utiliser ce bout de code concernant le style :
Code:
1 2 3 4 5 6 7 8 9 10
|
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(); |
De plus, comme je l'ai lu dans vos messages : le style est spécifié dans les balise html alors pourquoi utiliser ces methodes dans le JTExtPane ?
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.
Je vous envois les parties cruciales de mon code:
Code:
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
|
public class FileAfficher extends JFrame {
private JTextPane texte;
private boolean texteModifie = false;
private String reponse;
public static void 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() {
public void 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() {
public void 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() {
public void 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;
}
private void 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.");
}
}
} |
S'il vous plait, comme vous pouvez le voir je suis perdue !
Pouvez vous me donner un site bien sur le JTextPane ou m'expliquer concrétement quand utilisez quoi !
MERCI