//Importa pacote de classe JAVA
importar java.awt.*;
importar java.awt.event.*;
importar javax.swing.*;
importar java.io.*;
classe EditFile
{
//Construtor padrão
EditarArquivo(){}
//Função salvar arquivo
void SaveFile(String nome,String str)
{
tentar
{
//Declara o objeto de saída do arquivo
FileOutputStream fos = novo FileOutputStream(nome);
//Arquivo salvo de saída
fos.write(str.getBytes());
}
pegar (IOException e)
{
//Ocorre um erro e imprime mensagem de erro
System.out.println(e.toString());
}
}
//Função de abrir arquivo
String OpenFile(Nome da string)
{
//Defina a string str para salvar o conteúdo do arquivo
String str=nulo;
//define o contador
int ch=0;
tentar
{
//Declara o objeto de entrada do arquivo
FileInputStream fis = new FileInputStream(nome);
//Percorre o objeto de entrada e armazena a memória em str
enquanto ((ch=fis.read())!=-1)
{
str=str+(char)ch;
}
//Fecha o objeto arquivo
fis.close();
}
pegar (IOException e)
{
//Ocorre um erro e imprime mensagem de erro
System.out.println(e.toString());
}
//retorna string
retornar string;
}
}
class MyMainFrame estende JFrame implementa ActionListener
{
//nome do arquivo
String nome do arquivo = null;
//Encontra a string
String findtxt=nulo;
//substitui a string
String substituirtxt=nulo;
//Encontre a posição inicial
int findtxtton=-1;
//Encontre o bit final
int findtxtoff=-1;
//painel do meio
Contêiner c=getContentPane();
//menu
JMenuBar mainMb=new JMenuBar();
//botão de menu
JMenu arquivoMenu=new JMenu("Arquivo");
JMenu editMenu=new JMenu("Editar");
JMenu typeMenu=new JMenu("formato");
JMenuItem newItem=new JMenuItem("Novo");
JMenuItem openItem=new JMenuItem("abrir");
JMenuItem saveItem=new JMenuItem("Salvar");
JMenuItem saveasItem=new JMenuItem("Salvar como");
JMenuItem exitItem=new JMenuItem("Sair");
JMenuItem findItem=new JMenuItem("Localizar");
JMenuItem findnextItem=new JMenuItem("Encontrar próximo");
JMenuItem changeItem=new JMenuItem("substituir");
JCheckBoxMenuItem changelineItem=new JCheckBoxMenuItem("Quebra automática de linha",false);
//Campo de texto
JTextArea txt=new JTextArea();
JTextArea txt2=new JTextArea();
//Barra de rolagem
JScrollPane jsp;
//Objeto de operação de arquivo
EditarArquivo ef=new EditarArquivo();
//Construtor
MeuMainFrame()
{
//Desenha interface
c.setLayout(novo BorderLayout());
jsp= novo JScrollPane(txt);
jsp.setHorizontalScrollBarPolicy(jsp.HORIZONTAL_SCROLLBAR_AS_NEEDED);
c.add(jsp,BorderLayout.CENTER);
mainMb.add(arquivoMenu);
arquivoMenu.add(novoItem);
arquivoMenu.add(openItem);
arquivoMenu.add(saveItem);
arquivoMenu.add(saveasItem);
arquivoMenu.addSeparator();
arquivoMenu.add(exitItem);
mainMb.add(editMenu);
editMenu.add(encontrarItem);
editMenu.add(encontrarnextItem);
editMenu.add(alterarItem);
mainMb.add(typeMenu);
typeMenu.add(changelineItem);
setJMenuBar(mainMb);
//Adiciona escuta de evento para o menu
newItem.addActionListener(este);
openItem.addActionListener(this);
saveItem.addActionListener(this);
saveasItem.addActionListener(this);
exitItem.addActionListener(this);
findItem.addActionListener(this);
findnextItem.addActionListener (este);
changeItem.addActionListener(this);
changelineItem.addActionListener(este);
}
//função manipuladora de eventos
ação pública nulaPerformed(ActionEvent e)
{
//Cria um objeto de operação de arquivo
EditarArquivo ef=new EditarArquivo();
//Se o botão for clicado, é novo
if(e.getActionCommand()=="Novo")
{
//Define o campo de texto como vazio
txt.setText(nulo);
//O nome do arquivo está vazio
nome do arquivo=nulo;
}
//Se o botão for clicado para abrir
if(e.getActionCommand()=="abrir")
{
//Define um formato de arquivo
FileDialog openDialog=new FileDialog(this,"Abrir arquivo...",FileDialog.LOAD);
//exibe o formulário
openDialog.show();
//Se o arquivo retornado não estiver vazio
if(openDialog.getFile()!=nulo)
{
//Obtém o nome do arquivo
nome do arquivo=openDialog.getFile();
//Obtém o conteúdo do arquivo
txt.setText(ef.OpenFile(openDialog.getFile()));
}
}
//Se o botão for clicado para salvar
if(e.getActionCommand()=="Salvar")
{
//Se não houver nome de arquivo
if(nomedoarquivo==nulo)
{
//Define um formato de arquivo
FileDialog saveDialog=new FileDialog(this,"Salvar como...",FileDialog.SAVE);
//exibe o formulário
salvarDialog.show();
//Se o arquivo retornado não estiver vazio
if(saveDialog.getFile()!=nulo)
{
//Obtém o nome do arquivo
nome do arquivo=saveDialog.getFile();
//salva o arquivo
ef.SaveFile(nomedoarquivo,txt.getText());
}
}
outro
{
//Salva o arquivo diretamente
ef.SaveFile(nomedoarquivo,txt.getText());
}
}
//Se você clicar no botão para salvar como
if(e.getActionCommand()=="Salvar como")
{
//Define um formato de arquivo
FileDialog saveDialog=new FileDialog(this,"Salvar como...",FileDialog.SAVE);
//exibe o formulário
salvarDialog.show();
//Se o arquivo retornado não estiver vazio
if(saveDialog.getFile()!=null)
{
//Obtém o nome do arquivo
nome do arquivo=saveDialog.getFile();
//salva o arquivo
ef.SaveFile(nomedoarquivo,txt.getText());
}
}
//Se o botão for clicado para sair
if(e.getActionCommand()=="Sair")
{
//desistir
Sistema.exit(0);
}
//Se o botão for clicado, é pesquisa
if(e.getActionCommand()=="Encontrar")
{
//Define uma caixa de diálogo
JOptionPane inputdia=new JOptionPane();
//Define a caixa de diálogo para obter o texto de pesquisa
findtxt=inputdia.showInputDialog("Digite o texto que deseja encontrar",null);
//Define as coordenadas reais
encontrartxtton=-1;
encontrartxtoff=-1;
//chama a função de busca
encontrar();
}
//Se você clicar no botão para encontrar o próximo
if(e.getActionCommand()=="Encontrar próximo")
{
//chama a função de busca
encontrar();
}
//Se o botão for clicado, substitua
if(e.getActionCommand()=="substituir")
{
//Define uma caixa de diálogo
JOptionPane inputdia=new JOptionPane();
// Obtém localização e substituição de texto
findtxt=inputdia.showInputDialog("Digite o texto a ser substituído",null);
replacetxt=inputdia.showInputDialog("Digite o texto substituído",null);
//Fazer backup do conteúdo
txt2.setText(substituirtxt);
txt2.selectAll();
txt2.copy();
//Chama a função de busca
encontrar();
//se não for encontrado
if(findtxton==-1&&findtxtoff==-1)
{
}
//Se encontrado
outro
{
//substituir
txt.paste();
}
encontrartxtton=-1;
encontrartxtoff=-1;
}
//Se o botão for clicado, ele será quebrado automaticamente
if(e.getActionCommand()=="Quebra automática de linha")
{
//Julgar o status atual
if(changelineItem.isSelected()==true)
{
//Define o estado da barra de rolagem
jsp.setHorizontalScrollBarPolicy(jsp.HORIZONTAL_SCROLLBAR_NEVER);
//Definir se vai quebrar ou não
txt.setLineWrap(true);
}
outro
{
jsp.setHorizontalScrollBarPolicy(jsp.HORIZONTAL_SCROLLBAR_AS_NEEDED);
txt.setLineWrap(falso);
}
}
}
//encontrar função
encontrar vazio público ()
{
//Definir string temporária
String tempstr;
//Encontra o texto se não estiver vazio
if(encontrartxt!=nulo)
{
tentar
{
//Procurar
tempstr=txt.getText(findtxton+1,(txt.getText().length()-findtxton-1));
findtxton=findtxton+1+tempstr.indexOf(findtxt);
}
pegar(Exceção e)
{
}
//Se o bit inicial mudar, ele será encontrado
if(encontrarxton!=-1)
{
//Define o bit final
findtxtoff=findtxton+findtxt.length();
}
outro
{
//Caso contrário aparece não encontrado
encontrartxtoff=-1;
JOptionPane.showMessageDialog(null,"Não encontrado");
}
//Selecione a parte encontrada
txt.select(findtxton,findtxtoff);
}
}
}
classe pública TextEdit
{
//Função principal
público estático void principal(String args[])
{
//Declaração para definir o formulário principal
MeuMainFrame f=new MeuMainFrame();
f.setSize(640.480);
f.setTitle("Editor de Texto");
//Mostra o formulário principal
)
;
}
/*
Problemas com quebra automática de linha do JTextArea
-------------------------------------------------- ----------------------------------
Se a barra de rolagem horizontal estiver definida como JSctollpane.
, então o JTextArea com esse objeto JSctollpane adicionado terá a função de quebra de linha, certo?
-------------------------------------------------- --------------------------
JTextArea.setLineWrap(envoltório booleano)
------------- ---- -------------------------------------------------------- ---- --------------
JTextArea.setLineWrap(boolean wrap) // Quebra de linha geral.
JTextArea.setWrapStyleWorld(boolean world)//Quebra linhas usando bordas de palavras como limites
*/