2011-03-15 3 views
1

J'ai un JTextArea sur un JFrame et un JButton.Comment obtenir du texte de JTextArea?

Lorsque l'utilisateur tape des caractères sur la zone de texte JTextArea et appuie sur le bouton, je souhaite que les informations soient enregistrées dans un fichier texte.

JTextArea textArea = new JTextArea(2, 20); 
    textArea.setLineWrap (true); 

    thehandler4 handler4 = new thehandler4(); // next button 
    button4.addActionListener(handler4); 


    private class thehandler4 implements ActionListener{ //next button 
     public void actionPerformed(ActionEvent event){ 


     PrintWriter log = null; 
     try { 

       FileWriter logg =new FileWriter("logsheet.txt",true); 
       log = new PrintWriter(logg); 

       log.println("Quick Notes: "+textArea); 
       log.close(); 
      } catch(Exception y) { y.printStackTrace(); } 

    }} 

Mais quand je l'ouvre logsheet.txt, je ne vois pas quelque chose. son null. Y at-il une fonction dont j'ai besoin comme textArea.getText(); J'ai essayé mais j'ai une erreur.

+0

Quelle est l'erreur que vous obtenez en faisant: textArea.getText()? –

+0

java.lang.NullPointerException \t à AdjustmentForm $ thehandler4.actionPerformed (AdjustmentForm.java:150) – razshan

Répondre

2

Je suppose que votre problème est que votre zone de texte est définie comme une classe visible et une variable locale. Votre ActionListener accède à la variable de classe qui est null.

//JTextArea textArea = new JTextArea(2, 20); // this is wrong, you don't want a local variable 
textArea = new JTextArea(2, 20); 

De plus, l'utilisation de la méthode textArea.write (...) est la bonne façon de procéder. Vous ne souhaitez pas utiliser la méthode getText(), car cette approche peut entraîner la présence de caractères de nouvelle ligne incorrects dans la chaîne.

+0

merci je viens de le remarquer. – razshan

0

Vous pouvez effectuer les opérations suivantes à la place: méthode

JTextArea textArea = new JTextArea(2, 20); 
FileWriter logg =new FileWriter("logsheet.txt",true); 
textArea.write(logg); 

L'écriture() vous permet d'écrire du texte de la zone de texte à un écrivain.

+0

il compile bien et exécute mais j'obtiens la même erreur décrite ci-dessus – razshan

Questions connexes