2017-09-27 8 views
0

Si je saisis du texte dans JTextArea et cliquez sur le bouton "Enregistrer", le texte JTextArea doit écrire/enregistrer dans un fichier .txt. Est-ce que mon essai & est à la bonne place dans la méthode du gestionnaire d'événements ou est-ce que certaines de ses parties doivent être dans le constructeur?Enregistrement de JTextArea dans un fichier .txt avec un bouton

Ceci est mon code:

package exercises; 

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.io.PrintWriter; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JTextArea; 

public class SimpleNotePadApp extends JFrame implements ActionListener { 

JButton button1 = new JButton("Open"); 
JButton button2 = new JButton("Save"); 

public SimpleNotePadApp(String title) { 
    super(title);        
    setDefaultCloseOperation(EXIT_ON_CLOSE); 
    setSize(300, 350);       
    setLayout(null); 


    JTextArea newItemArea = new JTextArea(); 
    newItemArea.setLocation(3, 3); 
    newItemArea.setSize(297, 282); 
    getContentPane().add(newItemArea); 

    button1.setLocation(30,290); 
    button1.setSize(120, 25); 
    getContentPane().add(button1); 

    button2.setLocation(150,290); 
    button2.setSize(120, 25); 
    getContentPane().add(button2); 

} 

public static void main(String[] args) { 
    SimpleNotePadApp frame; 

    frame = new SimpleNotePadApp("Text File GUI");  
    frame.setVisible(true);        
} 

public void actionPerformed(ActionEvent e) { 

    if(e.getSource() == button1) 
    { 
     try { 
      PrintWriter out = new PrintWriter(new FileWriter("TestFile.txt")); 
      newItemArea.getText(); 
      newItemArea.write(out); 
      out.println(newItemArea); 
      out.flush(); 
      out.close(); 

     } catch (IOException e1) { 
      System.err.println("Error occurred"); 
      e1.printStackTrace(); 
     } 
    } 
} 
} 

Merci à l'avance

+3

'Est-ce que mon try & catch est à la bonne place ...' - Pourquoi serait-ce dans le constructeur? Exécutez-vous votre code à partir du constructeur? En outre, utilisez la méthode JTextArea.write (...) pour enregistrer les données dans un fichier. – camickr

+0

Les interfaces graphiques Java doivent fonctionner sur différents systèmes d'exploitation, taille d'écran, résolution d'écran, etc., en utilisant différents PLAF dans différents environnements locaux. En tant que tels, ils ne sont pas propices à la mise en page pixel parfait. Utilisez plutôt des gestionnaires de disposition, ou [des combinaisons de ceux-ci] (http://stackoverflow.com/a/5630271/418556) avec un remplissage de mise en page et des bordures pour [espace blanc] (http://stackoverflow.com/a/17874718/ 418556). –

Répondre

0

Votre try ... catch est au bon endroit, mais le contenu doit être juste:

 PrintWriter out = new PrintWriter(new FileWriter("TestFile.txt")); 
     newItemArea.write(out); 
     out.close(); 

Pensez à utiliser essayer avec -ressources, et le .close() devient inutile:

try (PrintWriter out = new PrintWriter(new FileWriter("TestFile.txt")) { 
     newItemArea.write(out); 
    } catch (IOException e1) { 
     System.err.println("Error occurred"); 
     e1.printStackTrace(); 
    } 

En outre, vous devrez attacher le ActionListener au JButton lors de la construction:

button2.addActionListener(this); 

(this est l'instance SimpleNotePadApp, qui met en œuvre ActionListener)

Enfin, vous voulez:

if(e.getSource() == button2) 

... depuis button2 est votre bouton "Enregistrer" (pas button1)

+0

Merci pour votre aide! Cependant, pour une raison quelconque, il ne sauvegarde toujours pas dans un fichier texte. Il est définitivement passé à la partie "essayer" depuis que je l'ai testé en imprimant quelque chose à la console ... – Caiz

+0

Etes-vous sûr que ce n'est pas écrit dans le fichier texte? Je recommande d'apporter quelques modifications au code dans la question à des fins de débogage. PAR EXEMPLE. change 'PrintWriter out = new PrintWriter (nouveau FileWriter (" TestFile.txt "));' 'Fichier f = nouveau fichier (" TestFile.txt "); PrintWriter out = new PrintWriter (nouveau FileWriter (f)); 'puis plus tard (après l'enregistrement), faire' Desktop.getDesktop(). Open (f); ' –