Salvar um texto em arquivo a cada 20segundos(automaticamente) usando thread

9 respostas
R
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import org.eclipse.wb.swing.FocusTraversalOnArray;
import java.awt.Component;
import javax.swing.JScrollPane;
import javax.swing.JEditorPane;

public class Editor extends JFrame {

	private static final long serialVersionUID = 1L;

	/**
	 * Inicia a aplicação.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Editor frame = new Editor();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Cria o frame.
	 */
	public Editor() {
		setTitle("EDITOR DE TEXTO");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		getContentPane().setLayout(new BorderLayout(0, 0));

		JScrollPane scrollPane = new JScrollPane();
		getContentPane().add(scrollPane, BorderLayout.CENTER);

		JEditorPane editorPane = new JEditorPane();
		scrollPane.setViewportView(editorPane);
		setFocusTraversalPolicy(new FocusTraversalOnArray(new Component[]{getContentPane()}));
	  }

preciso salvar em arquivo ajuda ai! sou novato em interface

9 Respostas

R
rafaelnet29:
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import org.eclipse.wb.swing.FocusTraversalOnArray;
import java.awt.Component;
import javax.swing.JScrollPane;
import javax.swing.JEditorPane;

public class Editor extends JFrame {

	private static final long serialVersionUID = 1L;

	/**
	 * Inicia a aplicação.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Editor frame = new Editor();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Cria o frame.
	 */
	public Editor() {
		setTitle("EDITOR DE TEXTO");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		getContentPane().setLayout(new BorderLayout(0, 0));

		JScrollPane scrollPane = new JScrollPane();
		getContentPane().add(scrollPane, BorderLayout.CENTER);

		JEditorPane editorPane = new JEditorPane();
		scrollPane.setViewportView(editorPane);
		setFocusTraversalPolicy(new FocusTraversalOnArray(new Component[]{getContentPane()}));
	  }

preciso salvar em arquivo ajuda ai! sou novato em interface. estou usando o easyEclipse

U

Primeiramente veremos como salvar em um arquivo:

public void gravar(String texto){

FileWriter writer;
BufferedWriter escrever;

		 try {

					writer = new FileWriter("Local_onde_quer_salvar.txt");
					escrever = new BufferedWriter(writer);
				
					escrever.write(texto);
					escrever.newLine();

					escrever.flush();
					
				}
			 
		 }
		
		
	} catch (IOException e) {
		e.printStackTrace();
	}

	}

Para chamar a função a cada 20 segundos basta criar uma thread e chamar a função.

Thread chamarFuncao = new Thread(new Runnable() {
		
		public void run() {
			gravar("passar_texto");
		
			try {
				Thread.sleep(20000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	});
	
	chamarFuncao.start();
U

Implemente o método gravar para que não seja preciso criar sempre as variáveis.

J
urbgames:
Para chamar a função a cada 20 segundos basta criar uma thread e chamar a função.
Thread chamarFuncao = new Thread(new Runnable() {	
		public void run() {
			gravar("passar_texto");
		
			try {
				Thread.sleep(20000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	});
	
	chamarFuncao.start();
Só uma correção dessa forma acima o método gravar só será executado uma única vez.. o correto e colocar o método dentro de um laço de repetição.
Thread chamarFuncao = new Thread(new Runnable() {	
    public void run() {		
        while (true) {
            try {
                gravar("passar_texto");
		  sleep(20000);
		  } catch (InterruptedException e) {
		      e.printStackTrace();
                  }
        }
    }
});
chamarFuncao.start();
R

Ou usar um agendador de tarefas, que a cada 20 seg. executaria a ação necessária.
O java já fornece as classes TimerTask e Timer para agendamento de tarefas. Da uma olhada nesse tutorial: Agendamento de Tarefas com TimerTask

U

jweibe é verdade, havia me esquecido deste detalhe muito importante.

R

galera valeu pela ajuda ai… muito obrigado mesmo

R

presciso salvar em arquivo o que eu to digitando na JTextArea

public class Editor extends JFrame {

	private JPanel contentPane;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Editor frame = new Editor();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 * @throws IOException
	 */
	public Editor() throws IOException {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(new BorderLayout(0, 0));

		JScrollPane scrollPane = new JScrollPane();
		contentPane.add(scrollPane, BorderLayout.CENTER);

		JTextArea textArea = new JTextArea();
		scrollPane.setViewportView(textArea);
R

preciso salvar o que estar sendo digitado na varialvel
JTextArea textArea = new JTexArea();

em arquivo

vlwss

Criado 10 de março de 2013
Ultima resposta 28 de mar. de 2013
Respostas 9
Participantes 4