//Importar paquete de clases JAVA
importar java.awt.*;
importar java.awt.event.*;
importar javax.swing.*;
importar java.io.*;
clase EditFile
{
//Constructor predeterminado
Editar archivo(){}
//Función de guardar archivo
void SaveFile (nombre de cadena, cadena de cadena)
{
intentar
{
//Declarar objeto de salida del archivo
FileOutputStream fos = nuevo FileOutputStream(nombre);
//Salida del archivo guardado
fos.write(str.getBytes());
}
captura (IOException e)
{
//Se produce un error y se imprime el mensaje de error
System.out.println(e.toString());
}
}
// Función abrir archivo
Cadena OpenFile (nombre de cadena)
{
//Definimos la cadena str para guardar el contenido del archivo
Cadena cadena = nulo;
//definir contador
int canal=0;
intentar
{
//Declarar el objeto de entrada del archivo
FileInputStream fis = nuevo FileInputStream(nombre);
//Recorre el objeto de entrada y almacena la memoria en str
mientras ((ch=fis.read())!=-1)
{
cadena=cadena+(char)ch;
}
//Cerrar el objeto del archivo
fis.cerrar();
}
captura (IOException e)
{
//Se produce un error y se imprime el mensaje de error
System.out.println(e.toString());
}
//vuelve cadena
devolver cadena;
}
}
clase MyMainFrame extiende JFrame implementa ActionListener
{
//Nombre del archivo
Nombre de archivo de cadena = nulo;
//Buscar cadena
Cadena findtxt=null;
//reemplazar cadena
Cadena reemplazartxt=null;
//Encuentra la posición inicial
int encontrartxton=-1;
//Encuentra el bit final
int encontrartxtoff=-1;
//panel central
Contenedor c=getContentPane();
//menú
JMenuBar principalMb=nuevo JMenuBar();
//botón de menú
JMenu fileMenu=new JMenu("Archivo");
JMenu editMenu=nuevo JMenu("Editar");
JMenu tipoMenu=nuevo JMenu("formato");
JMenuItem newItem=nuevo JMenuItem("Nuevo");
JMenuItem openItem=nuevo JMenuItem("abrir");
JMenuItem saveItem=new JMenuItem("Guardar");
JMenuItem saveasItem=new JMenuItem("Guardar como");
JMenuItem exitItem=new JMenuItem("Salir");
JMenuItem findItem=new JMenuItem("Buscar");
JMenuItem findnextItem=new JMenuItem("Buscar siguiente");
JMenuItem changeItem=new JMenuItem("reemplazar");
JCheckBoxMenuItem changelineItem=new JCheckBoxMenuItem("Ajuste de línea automático",false);
//campo de texto
JTextArea txt=nueva JTextArea();
JTextArea txt2=nueva JTextArea();
//barra de desplazamiento
JScrollPanejsp;
//Objeto de operación de archivo
Editar archivo ef=nuevo Editar archivo();
//Constructor
Mi marco principal()
{
//Dibujar interfaz
c.setLayout(nuevo BorderLayout());
jsp= nuevo JScrollPane(txt);
jsp.setHorizontalScrollBarPolicy(jsp.HORIZONTAL_SCROLLBAR_AS_NEEDED);
c.add(jsp,BorderLayout.CENTRO);
mainMb.add(menúarchivo);
fileMenu.add(newItem);
fileMenu.add(openItem);
fileMenu.add(saveItem);
fileMenu.add(saveasItem);
fileMenu.addSeparator();
fileMenu.add(exitItem);
mainMb.add(editarMenú);
editarMenu.add(findItem);
editMenu.add(findnextItem);
editarMenu.add(cambiarItem);
mainMb.add(tipoMenú);
typeMenu.add(changelineItem);
setJMenuBar(principalMb);
//Agregar escucha de eventos para el menú
newItem.addActionListener(esto);
openItem.addActionListener(esto);
saveItem.addActionListener(esto);
saveasItem.addActionListener(esto);
exitItem.addActionListener(esto);
findItem.addActionListener(esto);
findnextItem.addActionListener(esto);
changeItem.addActionListener(esto);
changelineItem.addActionListener(esto);
}
//función del controlador de eventos
acción nula pública realizada (ActionEvent e)
{
//Crear un objeto de operación de archivo
Editar archivo ef=nuevo Editar archivo();
//Si se hace clic en el botón, es nuevo
if(e.getActionCommand()=="Nuevo")
{
//Establece el campo de texto como vacío
txt.setText(nulo);
//El nombre del archivo está vacío
nombre de archivo = nulo;
}
//Si se hace clic en el botón para abrir
if(e.getActionCommand()=="abrir")
{
//Definir un formulario de archivo
FileDialog openDialog=new FileDialog(this,"Abrir archivo...",FileDialog.LOAD);
//mostrar formulario
openDialog.show();
//Si el archivo devuelto no está vacío
si (openDialog.getFile()! = nulo)
{
//Obtener el nombre del archivo
nombre de archivo=openDialog.getFile();
//Obtener el contenido del archivo
txt.setText(ef.OpenFile(openDialog.getFile()));
}
}
//Si se hace clic en el botón para guardar
if(e.getActionCommand()=="Guardar")
{
//Si no hay nombre de archivo
si (nombre de archivo == nulo)
{
//Definir un formato de archivo
FileDialog saveDialog=new FileDialog(this,"Guardar como...",FileDialog.SAVE);
//mostrar formulario
saveDialog.show();
//Si el archivo devuelto no está vacío
si(saveDialog.getFile()!=nulo)
{
//Obtener el nombre del archivo
nombre de archivo=saveDialog.getFile();
// guardar archivo
ef.SaveFile(nombre de archivo,txt.getText());
}
}
demás
{
//Guarda el archivo directamente
ef.SaveFile(nombre de archivo,txt.getText());
}
}
//Si haces clic en el botón para guardar como
if(e.getActionCommand()=="Guardar como")
{
//Definir un formato de archivo
FileDialog saveDialog=new FileDialog(this,"Guardar como...",FileDialog.SAVE);
//mostrar formulario
saveDialog.show();
//Si el archivo devuelto no está vacío
si(saveDialog.getFile()!=nulo)
{
//Obtener el nombre del archivo
nombre de archivo=saveDialog.getFile();
// guardar archivo
ef.SaveFile(nombre de archivo,txt.getText());
}
}
//Si se hace clic en el botón para salir
if(e.getActionCommand()=="Salir")
{
//abandonar
Sistema.salir(0);
}
//Si se hace clic en el botón, se busca
if(e.getActionCommand()=="Buscar")
{
//Definir un cuadro de diálogo
JOptionPane inputdia=nuevo JOptionPane();
//Definir cuadro de diálogo para obtener el texto de búsqueda
findtxt=inputdia.showInputDialog("Ingrese el texto que desea buscar",null);
//Definir las coordenadas reales
encontrartxton=-1;
encontrartxtoff=-1;
//Llama a la función de búsqueda
encontrar();
}
//Si haces clic en el botón para encontrar el siguiente
if(e.getActionCommand()=="Buscar siguiente")
{
//Llama a la función de búsqueda
encontrar();
}
//Si se hace clic en el botón, reemplace
if(e.getActionCommand()=="reemplazar")
{
//Definir un cuadro de diálogo
JOptionPane inputdia=nuevo JOptionPane();
//Obtener buscar y reemplazar texto
findtxt=inputdia.showInputDialog("Ingrese el texto que desea reemplazar",null);
replacetxt=inputdia.showInputDialog("Ingrese el texto reemplazado",null);
//Contenido de copia de seguridad
txt2.setText(reemplazartxt);
txt2.selectAll();
txt2.copia();
//Llama a la función de búsqueda
encontrar();
//si no se encuentra
si(findtxton==-1&&findtxtoff==-1)
{
}
//Si se encuentra
demás
{
//reemplazar
txt.paste();
}
encontrartxton=-1;
encontrartxtoff=-1;
}
//Si se hace clic en el botón, se ajustará automáticamente
if(e.getActionCommand()=="Ajuste de línea automático")
{
//Juzgar el estado actual
if(changelineItem.isSelected()==verdadero)
{
//Establece el estado de la barra de desplazamiento
jsp.setHorizontalScrollBarPolicy(jsp.HORIZONTAL_SCROLLBAR_NEVER);
//Establecer si envolver o no
txt.setLineWrap(verdadero);
}
demás
{
jsp.setHorizontalScrollBarPolicy(jsp.HORIZONTAL_SCROLLBAR_AS_NEEDED);
txt.setLineWrap(falso);
}
}
}
// buscar función
búsqueda de vacío público()
{
//Definir cadena temporal
Tempstr de cadena;
//Busca texto si no está vacío
si (buscar texto! = nulo)
{
intentar
{
//Buscar
tempstr=txt.getText(findtxton+1,(txt.getText().length()-findtxton-1));
buscartxton=buscartxton+1+tempstr.indexOf(findtxt);
}
captura (Excepción e)
{
}
//Si el bit de inicio cambia, se encuentra
si(encontrartxton!=-1)
{
//Establece el bit final
findtxtoff=findtxton+findtxt.length();
}
demás
{
//De lo contrario muestra no encontrado
encontrartxtoff=-1;
JOptionPane.showMessageDialog(nulo,"No encontrado");
}
//Selecciona la parte encontrada
txt.select(findtxton,findtxtoff);
}
}
}
Texto de clase pública
{
//Función principal
principal vacío estático público (argumentos de cadena [])
{
//Declaración para configurar el formulario principal
MiMarcoPrincipal f=nuevo MiMarcoPrincipal();
f.setSize(640,480);
f.setTitle("Editor de texto");
//Mostrar el formulario principal
)
;
}
/*
Problemas con el ajuste automático de línea de JTextArea
-------------------------------------------------- ----------------------------------
Si la barra de desplazamiento horizontal está configurada en JSctollpane.
, entonces el JTextArea con este objeto JSctollpane agregado tendrá la función de ajuste de línea, ¿verdad?
-------------------------------------------------- --------------------------
JTextArea.setLineWrap(ajuste booleano)
------------- ---- ---------------------------------------------- ---- --------------
JTextArea.setLineWrap(ajuste booleano)//Ajuste de línea general.
JTextArea.setWrapStyleWorld(boolean world)//Romper líneas usando bordes de palabras como límites
*/