2017-08-03 10 views
0

BufferedWriterを閉じるActionListenerを追加したいと思います。全体として、私のプログラムは変数の値をファイルに保存しています。これらの値は、このJava GUIで実行されるPythonスクリプトに読み込まれます。しかし、(ボタンクリック)ActionListenerを動作させることはできません。私はWindowListener(フレームクローズ用)のみを動作させることができます。 WindowListenerのためにJava Swing ButtonのActionListenerの作成方法

私は、次のコードは、エラーを与えるのActionListenerについては、

frame.addWindowListener(new WindowAdapter() { 
      public void windowClosing(WindowEvent e) { 
       try { 
        bufferFileWriter.close(); 
       } catch (IOException ioe) { 
        ioe.printStackTrace(); 
       } 
      } 

     }); 

を使用:にjava.io.IOExceptionストリームが閉じられて、私は次のコードを使用し

setVarFileBtn.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       // Save the variable values when VarFileBtn pressed 
       try { 
        bufferFileWriter.close(); 
       } catch (IOException ioe) { 
        ioe.printStackTrace(); 
       } 
      } 
     }); 

何をリスナーがボタンを識別するために使用するコードsetVarFileBtnがクリックされた後、BufferedWriterを閉じますか? BufferedWriterの書き込みをファイルに保存するために、特定のJava Swingコードの概念が欠けていますか?

+0

ボタンを押したのが実際に 'setVarFileBtn'だったかどうかを確認する方法はありますか? –

+0

特定のボタンが押されたことを確認する以上のことをしたい。私はいくつかのアクションを実行し、bufferFileWriterというBufferedWriterを閉じます。それは私がファイルに書いたすべてのものを保存するために以前にやったことです。 – lasingallday

答えて

0

押されているボタンを取得するには、イベントからアクションコマンドを取得する必要があります。あなたは、このような操作を行うことができます。

new ActionListener() { 
    public void actionPerformed(ActionEvent e) 
    { 
     if (e.getActionCommand().equals("Save")) { 
      // perform save code 
     } 
    } 
} 

"Save"JButtonの名前は何でもあります。

+0

修正済み。それを指摘してくれてありがとう、それをキャッチしていない! @camickr –

1

私はこの問題を解決しました。同じボタンに対して2つのActionListenerがあるため、エラーが発生しました。示されていないリスナーは、変数値を書き込むためのものです。これを最初のリスナーに追加すると、

try { 
        bufferFileWriter.close(); 
       } catch (IOException ioe) { 
        ioe.printStackTrace(); 
       } 

可変値が私のファイルに書き込まれました。

+0

@NickClarkでは、各関数に対して別々のリスナーを用意することをお勧めします。 Whever、if/elseステートメントを使用してリスナーコードを書くのは、設計に問題があります。 – camickr

関連する問題