//Импортируем пакет класса JAVA
импортировать java.awt.*;
импортировать java.awt.event.*;
импортировать javax.swing.*;
класс
java.io.*;
{
//Конструктор по умолчанию
РедактироватьФайл(){}
//Функция сохранения файла
void SaveFile (имя строки, строка str)
{
пытаться
{
//Объявляем объект вывода файла
FileOutputStream fos = новый FileOutputStream (имя);
//Выходной файл сохранения
fos.write(str.getBytes());
}
улов (IOException e)
{
//Происходит ошибка и выводим сообщение об ошибке
System.out.println(e.toString());
}
}
//Функция открытия файла
String OpenFile (имя строки)
{
//Определяем строку str для сохранения содержимого файла
Строка ул = ноль;
//определяем счетчик
интервал ч=0;
пытаться
{
//Объявляем объект ввода файла
FileInputStream fis = новый FileInputStream (имя);
//Обходим входной объект и сохраняем память в str
в то время как ((ch=fis.read())!=-1)
{
стр=стр+(символ)ч;
}
//Закрываем объект файла
фис.закрыть();
}
улов (IOException e)
{
//Происходит ошибка и выводим сообщение об ошибке
System.out.println(e.toString());
}
//возвращаем строку
вернуть ул;
}
}
Класс MyMainFrame расширяет JFrame и реализует ActionListener
{
//имя файла
Строковое имя файла = null;
//Находим строку
Строка findtxt=null;
//заменяем строку
Строка replacetxt=null;
//Находим начальную позицию
интервал findtxton = -1;
//Находим последний бит
интервал findtxtoff = -1;
//средняя панель
Контейнер c=getContentPane();
//меню
JMenuBar mainMb = новый JMenuBar ();
//кнопка меню
JMenu fileMenu = новый JMenu («Файл»);
JMenu editMenu=новый JMenu("Редактировать");
JMenu typeMenu=новый JMenu("формат");
JMenuItem newItem=новый JMenuItem("Новый");
JMenuItem openItem = новый JMenuItem («открыть»);
JMenuItem saveItem = новый JMenuItem («Сохранить»);
JMenuItem saveasItem=новый JMenuItem("Сохранить как");
JMenuItem exitItem = новый JMenuItem («Выход»);
JMenuItem findItem = новый JMenuItem («Найти»);
JMenuItem findnextItem=новый JMenuItem("Найти следующий");
JMenuItemchangeItem=новый JMenuItem("заменить");
JCheckBoxMenuItemchangelineItem=new JCheckBoxMenuItem("Автоматический перенос строк",false);
//Текстовое поле
JTextArea txt = новый JTextArea();
JTextArea txt2 = новая JTextArea();
//Полоса прокрутки
JScrollPane jsp;
//Объект файловой операции
EditFile ef=новый EditFile();
//Конструктор
МойМейнФрейм()
{
//Рисуем интерфейс
c.setLayout(новый BorderLayout());
jsp = новый JScrollPane (txt);
jsp.setHorizontalScrollBarPolicy(jsp.HORIZONTAL_SCROLLBAR_AS_NEEDED);
c.add(jsp,BorderLayout.CENTER);
mainMb.add(fileMenu);
fileMenu.add(newItem);
fileMenu.add(openItem);
fileMenu.add(saveItem);
fileMenu.add(saveasItem);
fileMenu.addSeparator();
fileMenu.add(exitItem);
mainMb.add(меню редактирования);
editMenu.add(findItem);
editMenu.add(findnextItem);
editMenu.add(changeItem);
mainMb.add(типМеню);
typeMenu.add(changelineItem);
setJMenuBar (mainMb);
//Добавляем прослушивание событий для меню
newItem.addActionListener(это);
openItem.addActionListener(это);
saveItem.addActionListener(это);
saveasItem.addActionListener(это);
exitItem.addActionListener(это);
findItem.addActionListener(это);
findnextItem.addActionListener(это);
ChangeItem.addActionListener(это);
ChangelineItem.addActionListener(это);
}
//функция обработчика событий
public void actionPerformed (ActionEvent e)
{
//Создаем объект файловой операции
EditFile ef=новый EditFile();
//Если кнопка нажата, она новая
if(e.getActionCommand()=="Новый")
{
//Устанавливаем текстовое поле пустым
txt.setText(ноль);
//Имя файла пусто
имя файла = ноль;
}
//Если нажата кнопка для открытия
если(e.getActionCommand()=="открыть")
{
//Определяем форму файла
FileDialog openDialog=new FileDialog(this,"Открыть файл...",FileDialog.LOAD);
// форма отображения
openDialog.show();
//Если возвращаемый файл не пустой
если (openDialog.getFile()! = ноль)
{
//Получаем имя файла
имя_файла = openDialog.getFile();
//Получаем содержимое файла
txt.setText(ef.OpenFile(openDialog.getFile()));
}
}
//Если нажата кнопка для сохранения
if(e.getActionCommand()=="Сохранить")
{
//Если нет имени файла
если (имя файла == ноль)
{
//Определяем форму файла
FileDialog saveDialog=new FileDialog(this,"Сохранить как...",FileDialog.SAVE);
// форма отображения
saveDialog.show();
//Если возвращаемый файл не пустой
если (saveDialog.getFile()! = null)
{
//Получаем имя файла
имя_файла = saveDialog.getFile();
//сохраняем файл
ef.SaveFile(имя файла,txt.getText());
}
}
еще
{
//Сохраняем файл напрямую
ef.SaveFile(имя файла,txt.getText());
}
}
//Если вы нажмете кнопку, чтобы сохранить как
if(e.getActionCommand()=="Сохранить как")
{
//Определяем форму файла
FileDialog saveDialog=new FileDialog(this,"Сохранить как...",FileDialog.SAVE);
// форма отображения
saveDialog.show();
//Если возвращаемый файл не пустой
если (saveDialog.getFile()! = null)
{
//Получаем имя файла
имя_файла = saveDialog.getFile();
//сохраняем файл
ef.SaveFile(имя файла,txt.getText());
}
}
//Если нажата кнопка для выхода
if(e.getActionCommand()=="Выход")
{
//покидать
Система.выход(0);
}
//Если кнопка нажата, это поиск
if(e.getActionCommand()=="Найти")
{
//Определяем диалоговое окно
JOptionPane inputdia = новый JOptionPane ();
//Определение диалогового окна для получения текста поиска
findtxt=inputdia.showInputDialog("Пожалуйста, введите текст, который хотите найти", null);
//Определяем фактические координаты
findtxton=-1;
findtxtoff=-1;
//Вызываем функцию поиска
находить();
}
//Если вы нажмете кнопку, чтобы найти следующий
if(e.getActionCommand()=="Найти следующий")
{
//Вызываем функцию поиска
находить();
}
//Если кнопка нажата, заменяем
если(e.getActionCommand()=="заменить")
{
//Определяем диалоговое окно
JOptionPane inputdia = новый JOptionPane ();
//Получаем текст поиска и замены
findtxt=inputdia.showInputDialog("Пожалуйста, введите текст для замены", null);
replacetxt=inputdia.showInputDialog("Пожалуйста, введите заменяемый текст",null);
//Резервное содержимое
txt2.setText(replacetxt);
txt2.selectAll();
txt2.копировать();
//Вызываем функцию поиска
находить();
//если не найден
если(findtxton==-1&&findtxtoff==-1)
{
}
//Если найден
еще
{
//заменять
txt.paste();
}
findtxton=-1;
findtxtoff=-1;
}
//Если кнопка нажата, она автоматически перенесется
if(e.getActionCommand()=="Автоматический перенос строк")
{
//Оцениваем текущий статус
если (changelineItem.isSelected() == true)
{
//Устанавливаем состояние полосы прокрутки
jsp.setHorizontalScrollBarPolicy(jsp.HORIZONTAL_SCROLLBAR_NEVER);
//Устанавливаем, переносить или нет
txt.setLineWrap(истина);
}
еще
{
jsp.setHorizontalScrollBarPolicy(jsp.HORIZONTAL_SCROLLBAR_AS_NEEDED);
txt.setLineWrap(ложь);
}
}
}
//находим функцию
публичный поиск пустоты()
{
//Определяем временную строку
Строка темпстр;
//Находим текст, если он не пуст
если (найтиtxt! = ноль)
{
пытаться
{
//Поиск
tempstr=txt.getText(findtxton+1,(txt.getText().length()-findtxton-1));
findtxton=findtxton+1+tempstr.indexOf(findtxt);
}
поймать (Исключение е)
{
}
//Если стартовый бит изменился, он найден
если(найтикстон!=-1)
{
//Устанавливаем конечный бит
findtxtoff=findtxton+findtxt.length();
}
еще
{
//В противном случае отображается сообщение «Не найдено».
findtxtoff=-1;
JOptionPane.showMessageDialog(null, «Не найден»);
}
//Выбираем найденную часть
txt.select(findtxton,findtxtoff);
}
}
}
Публичный класс TextEdit
{
//Основная функция
public static void main(String args[])
{
//Объявление для установки основной формы
MyMainFrame f = новый MyMainFrame ();
f.setSize(640,480);
f.setTitle("Текстовый редактор");
//Отображение главной формы
f.setVisible (истина
)
}
/*
Проблемы с автоматическим переносом строк JTextArea
-------------------------------------------------- ----------------------------------
Если для горизонтальной полосы прокрутки установлено значение JSctollpane.
, тогда JTextArea с добавленным объектом JSctollpane будет иметь функцию переноса строк, верно?
-------------------------------------------------- --------------------------
JTextArea.setLineWrap(логический перенос)
------------- ---- --------------------------------------------- ---- --------------
JTextArea.setLineWrap(логический перенос)//Общий перенос строки.
JTextArea.setWrapStyleWorld(boolean world)//Разрыв строк, используя края слов в качестве границ
*/