2016-10-29 4 views
0

J'essaie de créer un éditeur de texte en Java, mais j'ai quelques problèmes.Enregistrer le contenu de JTextPane (Image, table) dans un fichier

Je peux ajouter une image à avec JTextPane avec insertIcon(), mais quand je l'enregistre le fichier est vide, j'essaie de l'enregistrer en tant que .doc. C'est la même chose quand j'essaie de changer la police, cela fonctionne dans JTextPane mais quand j'enregistre sa police par défaut, pas la police/taille que j'avais.

Ceci est ma méthode saveFile:

 try { 
     BufferedWriter writer = new BufferedWriter(new FileWriter(filename)); 
     writer.write(text.getText()); 
     writer.close(); 
     saved = true; 
    } catch (IOException err) { 
     err.printStackTrace(); 
    } 
} 

Merci à l'avance: P

EDIT:

J'insertion d'une image dans mon JTextPane comme ceci:

JFileChooser open = new JFileChooser(); 
      open.showOpenDialog(null); 
      File file = open.getSelectedFile(); 
      Icon image = new ImageIcon(String.valueOf(file)); 
      text.insertIcon(image); 

Je sauve le JTextPane dans un fichier en utilisant la méthode saveFile ci-dessus. L'image est ajoutée au JTextPane, tout va bien. Mais quand j'ouvre le fichier, l'image n'est pas là.

+1

1) Pour une meilleure aide plus rapide, postez un [MCVE] ou [Short, Self Contained, Example correct] (http://www.sscce.org/). 2) Une façon d'obtenir une image (s) pour un exemple est de faire un lien direct vers les images vues dans [ce Q & A] (http://stackoverflow.com/q/19209650/418556). 3) Essayez ['JTextComponent.write (Writer)'] (http://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html#write-java.io.Writer- –

+0

J'ai essayé la méthode mais ça ne marchera pas. –

+0

Pourquoi voulez-vous qu'une image soit sauvegardée alors que tout ce que vous faites est d'enregistrer du texte? Comment l'image serait-elle magiquement écrite dans cette situation? –

Répondre

0

Vous pouvez essayer de rincer le graveur avant de le fermer. Ajoutez la ligne writer.flush(). Cela videra le flux de sortie sous-jacent. Essentiellement ici l'écriture dans le fichier commence.

Editer: J'ai testé le code et il écrit dans un fichier. Votre problème est-il que la police n'est pas la même qu'avant la sauvegarde?

+0

Oui, et quand j'insère une image, elle ne sauvegarde pas dans le fichier. –

+0

L'image ne peut pas être enregistrée dans le fichier? Vous écrivez seulement le texte. Pour sauvegarder tout le composant, vous devez faire ce qu'Andrew a suggéré. Cela enregistre l'état actuel du composant. Et pas seulement le texte. –

+0

J'ai essayé ce qu'il a dit que ça ne marche pas, peut-être que je ne l'ai pas fait correctement? text.write (writer); –

0

Vous devez utiliser le kit EditorKit. J'écrirai une réponse plus précise demain.