Tentei ao todo retirar esta dúvida em 8 foruns diferentes, por favor não coloquem coisas como gravar objeto e nem para console, mesmo porque estou cansado de tanto pesquisar e ninguém explicar como exibir o jFileCooser, ler o nome e salvar o arquivo em .txt. A maioria vem com coisas como escrever em console e outras sem nada a ver.
Esta muito difícil entender como faz.
Se é para explicar coisas sem nada a ver como salvar propriedades de objetos ou programação para console, nem venha responder.
Me desculpa a groseria, mais estou há tanto tempo me empenhando e quando penso que vai vir a resposta, vem sempre coisas sem nada a ver em 8 forums diferentes.
Tudo o que quero é exibir um jFileChooser, ler e salvar o arquivo e estou a dias pesquisando para NADA além de coisas sem nada a ver.
Veja como foi feito. Note que o JFileChooser não salva ou abre arquivos (ele serve para escolher arquivos - o nome dele é “Chooser”, ou seja, escolhedor); você é que deve fazer isso por conta.
package guj;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Font;
import java.io.File;
import java.io.PrintWriter;
import java.io.StringWriter;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.border.TitledBorder;
public class ExemploJFileChooser extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JPanel pnlFile = null;
private JPanel pnlButtons = null;
private JButton btnSave = null;
private JTextField txtFileName = null;
private JButton btnBrowse = null;
private JPanel getPnlFile() {
if (pnlFile == null) {
pnlFile = new JPanel();
pnlFile.setLayout(new BoxLayout(getPnlFile(), BoxLayout.X_AXIS));
pnlFile.setBorder(BorderFactory.createTitledBorder(null,
"Output File", TitledBorder.DEFAULT_JUSTIFICATION,
TitledBorder.DEFAULT_POSITION, new Font("Dialog",
Font.BOLD, 12), new Color(51, 51, 51)));
pnlFile.add(getTxtFileName(), null);
pnlFile.add(getBtnBrowse(), null);
}
return pnlFile;
}
private JPanel getPnlButtons() {
if (pnlButtons == null) {
pnlButtons = new JPanel();
pnlButtons.setLayout(new FlowLayout());
pnlButtons.add(getBtnSave(), null);
}
return pnlButtons;
}
private JButton getBtnSave() {
if (btnSave == null) {
btnSave = new JButton();
btnSave.setText("Save!");
btnSave.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
try {
if (!txtFileName.getText().isEmpty()) {
PrintWriter pw = new PrintWriter (txtFileName.getText());
pw.println ("Hello, world!");
pw.close();
JOptionPane.showMessageDialog (ExemploJFileChooser.this, "Arquivo " + txtFileName.getText() + " criado com sucesso.");
} else {
JOptionPane.showMessageDialog(ExemploJFileChooser.this, "Você precisa entrar com um nome de arquivo.");
}
} catch (Exception ex) {
StringWriter sw = new StringWriter();
PrintWriter pws = new PrintWriter (sw);
ex.printStackTrace (pws);
pws.close();
JOptionPane.showMessageDialog(ExemploJFileChooser.this, sw.toString());
}
}
});
}
return btnSave;
}
private JTextField getTxtFileName() {
if (txtFileName == null) {
txtFileName = new JTextField();
}
return txtFileName;
}
private JButton getBtnBrowse() {
if (btnBrowse == null) {
btnBrowse = new JButton();
btnBrowse.setText("Browse...");
btnBrowse.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
JFileChooser jfc = new JFileChooser();
File currentFileOrDirectory = null;
if (txtFileName.getText().isEmpty()
|| !(new File(txtFileName.getText())).exists())
jfc.setCurrentDirectory(null);
else {
currentFileOrDirectory = new File(txtFileName.getText());
if (currentFileOrDirectory.isFile())
jfc.setSelectedFile(currentFileOrDirectory);
else {
jfc.setCurrentDirectory(currentFileOrDirectory);
}
}
int ret = jfc.showSaveDialog(ExemploJFileChooser.this);
if (ret == JFileChooser.APPROVE_OPTION) {
txtFileName.setText(jfc.getSelectedFile().getAbsolutePath());
}
}
});
}
return btnBrowse;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
SwingUtilities.invokeLater(new Runnable() {
public void run() {
ExemploJFileChooser thisClass = new ExemploJFileChooser();
thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
thisClass.setVisible(true);
}
});
}
public ExemploJFileChooser() {
super();
initialize();
}
private void initialize() {
this.setSize(555, 114);
this.setContentPane(getJContentPane());
this.setTitle("Exemplo JFileChooser");
}
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(new BorderLayout());
jContentPane.add(getPnlFile(), BorderLayout.CENTER);
jContentPane.add(getPnlButtons(), BorderLayout.SOUTH);
}
return jContentPane;
}
}
[quote=ViniGodoy]E tem mais outro exemplo aqui:
http://www.guj.com.br/posts/list/15/207725.java#1055757[/quote]
Pelo menos neste exemplo, consegui entender ao menos os métodos.
Mais acho vou desistir, não consigo salvar em .txt. um editor de texto que não salva e nem pega salvo arquivos é inútil.
Não consigo. quando mexi no VS com isto, era só dar Stream e pronto, mais não estou entendendo como salvar.
Mas onde está sua dúvida, exatamente? Para salvar em txt você só usa um FileWriter, associado a um PrintWriter. Só isso:
[code]FileWriter fr = new FileWriter(new File(“C:\teste.txt”));
PrintWriter pw = new PrintWriter(pw);
pw.println(“Isso será salvo num .txt”);
pw.flush();
pw.close();
[/code]
A única coisa que o FileChooser faz a mais é dar ao usuário a possibilidade de escolher o nome do arquivo:
JFileChooser chooser = new JFileChooser();
//Abre o file chooser. Ele retorna JFileChooser.APPROVE_OPTION caso o usuário
//pressione ok.
if (fileChooser.showOpenDialog(null) != JFileChooser.APPROVE_OPTION) {
return; //Se não pressionou ok, saímos do método.
}
//Usamos o getSelectedFile() para pegar o nome do arquivo selecionado
FileWriter fr = new FileWriter(chooser.getSelectedFile());
PrintWriter pw = new PrintWriter(pw);
pw.println("Isso será salvo num .txt");
pw.flush();
pw.close();
No VS ou no C# não é muito mais fácil.
Não sei se sou meio burro, mais não entendi a parte de “pw.println(“Isso será salvo num .txt”);” Ele pegara um arquivo e salvará obrigatoriamente como .txt?
Ou estou enganado?
[quote=ViniGodoy]
A única coisa que o FileChooser faz a mais é dar ao usuário a possibilidade de escolher o nome do arquivo:
JFileChooser chooser = new JFileChooser();
//Abre o file chooser. Ele retorna JFileChooser.APPROVE_OPTION caso o usuário
//pressione ok.
if (fileChooser.showOpenDialog(null) != JFileChooser.APPROVE_OPTION) {
return; //Se não pressionou ok, saímos do método.
}
//Usamos o getSelectedFile() para pegar o nome do arquivo selecionado
FileWriter fr = new FileWriter(chooser.getSelectedFile());
PrintWriter pw = new PrintWriter(pw);
pw.println("Isso será salvo num .txt");
pw.flush();
pw.close();
No VS ou no C# não é muito mais fácil.[/quote]
Tio, você precisa de um dicionário português <-> espanhol? “Espanhol” é o Java, e “português” (um dialeto do espanhol, separado há alguns séculos somente) é o C#.
No seu caso, você quer a correspondência entre o C# e o Java, certo? Então vamos lá.
// Java
import java.io.*;
class TestePrintWriter {
public static void main (String[] args) throws FileNotFoundException {
PrintWriter pw = new PrintWriter ("c:\\temp\\teste.txt");
pw.println ("Adeus, mundo cruel!");
pw.close();
}
}
// C#
using System;
using System.IO;
class TesteStreamWriter {
public static void Main (String[] args) {
StreamWriter sw = new StreamWriter ("c:\\temp\\teste.txt");
sw.WriteLine ("Adeus, mundo cruel!");
sw.Close();
}
}
Em vez de “StreamWriter” o Java usa “PrintWriter”. Que tal?
Essa parte escreve o texto “Isso será salvo num .txt” no arquivo escolhido pelo usuário. No caso, usando um PrintWriter, o arquivo será obrigatoriamente um arquivo de texto (como você pediu no início do tópico).
É possível gerar arquivos com conteúdo puramente binário também, mas para isso, utiliza-se um FileOutputStream, no lugar de um FileWriter. E um DataOutputStream, no lugar de um PrintWriter.
Amigo, sério… Você ao menos leu oque o ViniGodoy postou?
Arroz + Feijão… o.O
[quote=ViniGodoy]Mas onde está sua dúvida, exatamente? Para salvar em txt você só usa um FileWriter, associado a um PrintWriter. Só isso:
[code]FileWriter fr = new FileWriter(new File(“C:\teste.txt”));
PrintWriter pw = new PrintWriter(pw);
pw.println(“Isso será salvo num .txt”);
pw.flush();
pw.close();
[/code]
A única coisa que o FileChooser faz a mais é dar ao usuário a possibilidade de escolher o nome do arquivo:
JFileChooser chooser = new JFileChooser();
//Abre o file chooser. Ele retorna JFileChooser.APPROVE_OPTION caso o usuário
//pressione ok.
if (fileChooser.showOpenDialog(null) != JFileChooser.APPROVE_OPTION) {
return; //Se não pressionou ok, saímos do método.
}
//Usamos o getSelectedFile() para pegar o nome do arquivo selecionado
FileWriter fr = new FileWriter(chooser.getSelectedFile());
PrintWriter pw = new PrintWriter(pw);
pw.println("Isso será salvo num .txt");
pw.flush();
pw.close();
[/quote]
Essa parte escreve o texto “Isso será salvo num .txt” no arquivo escolhido pelo usuário. No caso, usando um PrintWriter, o arquivo será obrigatoriamente um arquivo de texto (como você pediu no início do tópico).
É possível gerar arquivos com conteúdo puramente binário também, mas para isso, utiliza-se um FileOutputStream, no lugar de um FileWriter. E um DataOutputStream, no lugar de um PrintWriter.[/quote]
Ahh é isto, para escrever no caso de um jTextArea, deveria colocar o objeto. Entendi
pw.println(jTextArea);
E para variáveis
pw.println(num1+num2);
[quote=TheKill]Amigo, sério… Você ao menos leu oque o ViniGodoy postou?
Arroz + Feijão… o.O
[quote=ViniGodoy]Mas onde está sua dúvida, exatamente? Para salvar em txt você só usa um FileWriter, associado a um PrintWriter. Só isso:
[code]FileWriter fr = new FileWriter(new File(“C:\teste.txt”));
PrintWriter pw = new PrintWriter(pw);
pw.println(“Isso será salvo num .txt”);
pw.flush();
pw.close();
[/code]
A única coisa que o FileChooser faz a mais é dar ao usuário a possibilidade de escolher o nome do arquivo:
JFileChooser chooser = new JFileChooser();
//Abre o file chooser. Ele retorna JFileChooser.APPROVE_OPTION caso o usuário
//pressione ok.
if (fileChooser.showOpenDialog(null) != JFileChooser.APPROVE_OPTION) {
return; //Se não pressionou ok, saímos do método.
}
//Usamos o getSelectedFile() para pegar o nome do arquivo selecionado
FileWriter fr = new FileWriter(chooser.getSelectedFile());
PrintWriter pw = new PrintWriter(pw);
pw.println("Isso será salvo num .txt");
pw.flush();
pw.close();
[/quote][/quote]
Ja entendi o código, obrigado pela paciência.