Inserir janela para abrir e salvar arquivos no Editor de texto

5 respostas
ChristinaMed

Olá queria uma ajuda para implementar uma janela para abrir e salvar arquivos do meu editor de texto.
o programa já abre uma janela para colocar o nome do arquivo, mas eh com o JPane: String nomeArq = JOptionPane.showInputDialog(frame, "Nome Arquivo");
já procurei na Net e achei isso:

public FileChooser(){
            String caminhoArquivo = "";
            JFileChooser arquivo = new JFileChooser();
            int retorno = arquivo.showOpenDialog(null);
            if(retorno == JFileChooser.APPROVE_OPTION){
                caminhoArquivo = arquivo.getSelectedFile().getAbsolutePath();
                JOptionPane.showMessageDialog(null, caminhoArquivo);
            }else{
                //não abriu
            }

Mas não consigo adicionar o JFileChooser, alguém pode me ajudar ,estou tentando implementar no BlueJ.

códigos:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class JanelaEditor {
    private JFrame frame = new JFrame("Meu Editor POO");
    private JMenuBar barra = new JMenuBar();
    private JMenu menuArquivo = new JMenu("Arquivo");
    private JMenu menuEditar = new JMenu("Editar");
    private JMenuItem itemAbrir = new JMenuItem("Abrir");
    private JMenuItem itemNovo = new JMenuItem("Novo");
    private JMenuItem itemSalvar = new JMenuItem("Salvar");
    private JMenuItem itemCopiar = new JMenuItem("Copiar");
    private JMenuItem itemColar = new JMenuItem("Colar");
    private JMenuItem itemRecortar = new JMenuItem("Recortar");
    private JTextArea areaTexto = new JTextArea(50,50);
    protected ControladorEditor controlador; 
    
    public JanelaEditor(){
        menuArquivo.add(itemAbrir);
        menuArquivo.add(itemNovo);
        menuArquivo.add(itemSalvar);
        menuEditar.add(itemCopiar);
        menuEditar.add(itemColar);
        menuEditar.add(itemRecortar);
        barra.add(menuArquivo);
        barra.add(menuEditar);
        frame.setJMenuBar(barra);
        frame.setSize(500,500);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Container cp = frame.getContentPane();
        cp.add(areaTexto);
         
        itemNovo.addActionListener( new ItemNovoListener() );
        itemCopiar.addActionListener( new ItemCopiarListener() );
        itemColar.addActionListener(
            new ActionListener(){
                public void actionPerformed(ActionEvent evt){
                    areaTexto.paste();
                }
            }
        );
        
        itemAbrir.addActionListener(
            new ActionListener(){
                public void actionPerformed(ActionEvent evt){
                    abrir();
                }
            }
        );
        
        itemSalvar.addActionListener(
            new ActionListener(){
                public void actionPerformed(ActionEvent evt){
                    salvar();
                }
            }
        );
        
    }
    
    public void setControlador(ControladorEditor c){
        controlador = c;
    }
    
    public ControladorEditor getControlador(){
        return controlador;
    }
    
    public void mostrarMensagemDeErro(String msg){
        JOptionPane.showMessageDialog(frame,msg);
    }
    
    public void salvar(){
        //LeitorEscritor le = new LeitorEscritor();
        String texto = areaTexto.getText();
        String nomeArq = JOptionPane.showInputDialog(frame, "Nome Arquivo");
        controlador.salvar(nomeArq,texto);
    }
    
    public void abrir(){
        
        String nomeArq = JOptionPane.showInputDialog(frame, "Nome Arquivo");
        String texto = controlador.abrir(nomeArq);
        areaTexto.setText(texto);
        
    }
    
    public void mostrar(){
        frame.setVisible(true);
    }
    
    public void apagar(){
        frame.setVisible(false);    
    }
    
    public JMenuItem getItemNovo(){
        return itemNovo;
    }
    
    public JMenuItem getItemAbrir(){
        return itemAbrir;
    }
    
    class ItemNovoListener implements ActionListener{
        public void actionPerformed(ActionEvent evt){
            areaTexto.setText("");
        }
    }
    
    class ItemCopiarListener implements ActionListener{
        public void actionPerformed(ActionEvent evt){
            areaTexto.copy();
        }
    }
    
}

---------------------------------//------------------------------

import java.io.*;
import java.util.*;

public class LeitorEscritor
{ 
 
    public LeitorEscritor(){
    }
    
    
    public String ler(String nomeArq) throws FileNotFoundException{
        File file = new File(nomeArq);
            Scanner sc = new Scanner(file);        
            String texto="";
            while (sc.hasNextLine()){
                texto += sc.nextLine()+"\r\n";
            }         
            sc.close();
       
        
    }
    
    public void escrever(String nomeArq, String texto){
        File file = new File(nomeArq);
        FileWriter fw=null;
        PrintWriter pw=null;
        try{
            fw = new FileWriter(file);
            pw = new PrintWriter(fw);
            pw.println(texto);
            pw.close();
        }catch(IOException e){
           System.out.println(e.getMessage()); 
        }catch(NullPointerException e){
        }
        
        
    }
--------------------------//-----------------------------
public interface ControladorEditor
{
    public String abrir(String nomeArq);
    
    public void salvar(String nomeArq, String texto);
    
}
------------------------------//--------------------------
public class PrincipalEditor {

    public static void main(String[] args){
        JanelaEditor je = new JanelaEditor();
        ControladorEditorImpl ce = new ControladorEditorImpl();
        je.setControlador(ce);
        ce.setJanelaEditor(je);
        je.mostrar();
        
    }    

}
-------------------------//------------------------------------
import java.io.*;

public class ControladorEditorImpl implements ControladorEditor {
    private LeitorEscritor le = new LeitorEscritor();    
    private JanelaEditor janelaEditor;
    
    public void setJanelaEditor(JanelaEditor j){
        janelaEditor = j;
    }
    
    public JanelaEditor getJanelaEditor(){
        return janelaEditor;
    }
    
    public String abrir(String nomeArq){
        try{
            return le.ler(nomeArq);
        }catch(FileNotFoundException e){            
            janelaEditor.mostrarMensagemDeErro("Arquivo não encontrado");
            return "";
        }
    }
    
    public void salvar(String nomeArq, String texto){
        le.escrever(nomeArq,texto);
    }
    
}

5 Respostas

lina

Oi,

Bem-vindo ao GUJ.

Antes de mais nada, sugiro que leia este tópico http://www.guj.com.br/java/50115-voce-e-novo-no-guj-vai-criar-um-topico-e-colar-seu-codigo-fonte-leia-aqui-antes-por-favor

Para a resolução do seu problema, sugiro mesmo usar o JFileChooser, no qual pode ser visualizado aqui:

http://docs.oracle.com/javase/tutorial/uiswing/components/filechooser.html

Tchauzin!

ChristinaMed

obg! vou dar uma olhada!

ChristinaMed

Consegui fazer isso, mas ele continua sem salvar (ajudem!)

public void salvar(){
        JFileChooser chooser;
        chooser = new JFileChooser();
        String caminho = "";
        File file = null;
        int retorno = chooser.showSaveDialog(null); 
        if (retorno==JFileChooser.APPROVE_OPTION){
            caminho = chooser.getSelectedFile().getAbsolutePath();  // o getSelectedFile pega o arquivo e o getAbsolutePath retorna uma string contendo o endereço.
        }
        if(!caminho.equals("")){
            
            file = new File(caminho+".txt"); //  salvar como txt
            String texto = areaTexto.getText();
            String nomeArq = (".txt");
            controlador.salvar(nomeArq,texto);
        }else{
           // throw new FileNaoSelecionadoException();        
        }
    }
pmlm

Se queres realmente que te ajudem, aconselho a que leias mesmo isto.

samirrolemberg

Você só está com o caminho do arquivo.

Depois de usar o JFileChooser e obter o caminho você precisa persistir o conteúdo dos seus dados com outros métodos como: InputStrem e OutputStream. (por exemplo)

Criado 12 de junho de 2012
Ultima resposta 12 de jun. de 2012
Respostas 5
Participantes 4