1

JFrame と JButton に JTextArea があります。

ユーザーが JTextArea textArea に文字を入力してボタンを押すと、情報が textFile に保存されるようにします。

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();    } 

    }}

しかし、logsheet.txt を開くと、何も表示されません。そのヌル。textArea.getText(); のような必要な関数はありますか? 私はそれを試しましたが、エラーが発生します。

4

2 に答える 2

3

あなたの問題は、テキスト領域がクラス変数とローカル変数として定義されていることだと思います。ActionListenerは、nullのクラス変数にアクセスしています。

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

また、textArea.write(...)メソッドを使用するのがこれを行う適切な方法です。getText()メソッドを使用しないでください。この方法では、文字列に間違った改行文字が含まれる可能性があります。

于 2011-03-16T00:05:01.963 に答える
0

代わりに次のことができます。

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

write() メソッドを使用すると、テキスト領域からライターにテキストを書き込むことができます。

于 2011-03-15T23:54:15.603 に答える