Creazione prima GUI

di il
1 risposte

Creazione prima GUI

Buona sera a tutti.
sto creando la mia prima GUI con java..
questa GUI dovrebbe creare una finestra con all'interno un area di testo e un bottone...
il bottone chiamato salva dovrebbe salvare il testo scritto nell'area di testo in un file chiamato "File.txt". il programma funziona normalmente fino a quando deve stampare la stringa sul file in uscita. in effetti crea il file ma non vi scrive dentro nulla...

ecco le classi che compongono questo piccolo programma:

MainFrame:

import java.awt.*;
import java.io.*;
import java.awt.event.*;
public class MainFrame {
	private Frame frame;
	private Button b;
	private TextArea ta;
	
	public MainFrame () {
		frame = new Frame("FINESTRA PRINCIPALE");
		b = new Button("SALVA");
		ta = new TextArea();
	}
	public void SetUp() {
		ta.setEditable(true);
		b.addActionListener(new ActionListener(){
			private BufferedWriter out;
			public void actionPerformed(ActionEvent e){
				String testo = new String();
				FileWriter fos = null; // crea un oggetto FileWriter
				File outputFile = new File("File.txt"); // crea il file output
				try{
				fos = new FileWriter(outputFile);
				out =new BufferedWriter(fos); // decoro il FileWriter con un Bufferedwriter
				testo = ta.getText(); // prende il testo dalla TextArea 
				out.write(testo); // dovrebbe stampare il testo nel file ma non funziona.
				}catch (IOException exc){
					exc.printStackTrace();
				}finally{
					try{
						fos.close();
					}catch (IOException exc){
						exc.printStackTrace();
					}
				}
			}
		});
		frame.add(b, BorderLayout.NORTH);
		frame.add(ta, BorderLayout.CENTER);
		frame.pack();
		frame.setVisible(true);
		frame.addWindowListener( new WindowAdapter() {
		    public void windowClosing (WindowEvent ev) {
		        System.exit(0);
		    }
		} );
	}
	
}
e la classe del mai "FirstGUI":

public class FirstGui {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		MainFrame prova = new MainFrame();
		prova.SetUp();
	}

}

qualcuno può aiutarmi a capire come mai non stampa sul file il testo? grazie mille in anticipo..

1 Risposte

  • Re: Creazione prima GUI

    Nosba ha scritto:


    il programma funziona normalmente fino a quando deve stampare la stringa sul file in uscita. in effetti crea il file ma non vi scrive dentro nulla...
    Scrivi correttamente nel BufferedWriter, che è l'oggetto di I/O più "esterno" che hai. Peccato che poi fai il close di fos, il FileWriter, che è l'oggetto più "interno".
    Devi sempre (e solo) chiudere l'oggetto di I/O più esterno. Non chiudendo il BufferedWriter, la quantità di dati che probabilmente hai scritto nella textarea è piccola tale da non scatenare un write implicito sul FileWriter. Quindi i dati restano nel BufferedWriter.
Devi accedere o registrarti per scrivere nel forum
1 risposte