В этой статье представлен подробный процесс написания Java, основанный на SWT. Это совместно с вами для вашей ссылки. Конкретный контент заключается в следующем
Он может реализовать основные функции настольного блокнота в системе Windows, обучения в стиле дураков и пошаговой операции. Xiaobai также может написать полное приложение самостоятельно.
Требуемые инструменты: Eclipse (с плагином SWT)
Готовый продукт выглядит следующим образом:
Введение функции приложения:
Функциональный анализ:
Меню файла включает
1.1. Создать (n) ctrl+n
1.2Open (o) ctrl+o
1.3save (s) ctrl+s
1,4, чтобы (а)
1.5 Выход (x)
Меню «Редактировать» включает в себя:
2.1 отменить (u) ctrl+z
2.2 Shear (T) Ctrl+T
2.3 Скопируйте (C) Ctrl+C
2.4 вставка (p) ctrl+v
2.5 DELETE (L) DEL
2.6 Найти (d) ctrl+f
2.7 Найдите следующее место (n) F3
2.8 заменить (r) ctrl+h
2.9 Перейти к (g) ctrl+g
2.10 Выберите все (a) ctrl+a
2.11 Время/Дата (D) F5
Меню формата включает
3.1 Автоматическая линейная обертка (w)
3.2 Font (F)
Меню View включает
4.1.
Меню справки включает
5.1 Просмотреть помощь (h)
5.2 о Блокноте (а)
Далее я научу вас шаг за шагом написать блокнот с несколькими конкретными категориями следующим образом:
1.notepad.java
Этот класс является основным классом интерфейса, который содержит события прослушивания каждой кнопки
2. util.java class Этот класс является вспомогательным классом, который облегчает вызовы участников, определенных в классе главного окна в других классах.
3. О about author.java
О классе автора, диалоговое окно для отображения информации автора
4.findwindow.java
Диалоговое окно для функции поиска
5.go_to.java
Перейдите в диалоговое окно функции
6.Openmethod.java
Есть два способа открыть инкапсулированный файл
7.savamethod.java
Два способа сохранения файлов
8. Swtrsourcemanager.java
Этот класс является извне импортируемым классом и используется для загрузки изображений
9.test.java
Запись программы, удобные файлы JAR с пакетом позже
10. quitmethod.java
Два способа закрыть окно инкапсулируются
Написание шагов:
один. Создайте новый проект SWT и создайте первое окно
Open Eclipse, New-> Другое-> WindowBuilder-> SWT Designer-> Project SWT/Jface Java. Назовите блокнот имени проекта
Откройте недавно созданный проект блокнота, щелкните правой кнопкой мыши New-> Package в SCR, чтобы создать новый пакет с именем com.chance.org
Советы: правила именования пакетов лучше всего используются для использования com. Custom.org. Не спрашивайте, почему, вы поймете после работы в будущем.
Щелкните правой кнопкой мыши недавно созданный пакет new-> Другой-> Windowbuilder-> SWT Designer-> SWT-> Имя окна приложения Блокнот.
На этом этапе мы построили первое окно SWT и нажали на дизайн в правой стороне источника, чтобы просмотреть графический интерфейс недавно созданного номера, чтобы реализовать визуальное программирование.
Переименовать свойство TXT в свойствах в форме блокнота: Блокнот
Перетащите компонент композитов в композиты в компонент блокнота и измените его свойство макета на заполнение, то есть на макет заполнения, чтобы весь интерфейс можно было превратить в домен редактирования позже. Затем перетащите текстовый компонент в компонент композитов. Проверьте атрибут H_Scroll и атрибут v_scroll в стиле свойства текстового компонента до true
Описание: H_SCROLL - это горизонтальная полоса прокрутки, V_SCROLL - это вертикальная полоса прокрутки
два. Установите соответствующие этикетки строки меню и общую планировку формы
Выберите компонент панели меню, чтобы перетащить его в основную форму
1. Установите первый элемент меню (файл)
Выберите компонент меню Cascde, перетащите его в компонент строки меню и измените атрибут: изменить атрибут переменной на File_menu и изменить текст на файл (f);
1.1 Настройки подменю: создать (n) ctrl+n
Выберите элемент меню, чтобы добавить в компонент меню Cascde, измените атрибут: изменить атрибут переменной на new_file и изменить текст на: new (n) ctrl+n;
1.2 Настройки подменю: открыть (o) ctrl+o
Выберите элемент меню, чтобы добавить в компонент меню Cascde, измените атрибут: измените атрибут переменной на open_file и измените текст на: open (o) ctrl+o
1.3 Настройки подменю: Сохранить (O) Ctrl+S
Выберите элемент меню, чтобы добавить в компонент меню CASCDE, измените атрибут: изменить атрибут переменной на save_file и изменить текст на: save (o) ctrl+s
1.4 Настройки подменю: Сохранить как (а)
Выберите элемент меню, чтобы добавить в компонент меню Cascde, измените атрибут: измените атрибут переменной на save_as и измените текст на: Сохранить как (a)
1.5 Настройки подменю: выход (x)
Выберите элемент меню, чтобы добавить в компонент меню Cascde, измените атрибут: изменить атрибут переменной, чтобы бросить, и измените текст на: exit (x)
2. Установите второй пункт меню (редактировать)
Выберите компонент меню Cascde, перетащите его в компонент панели меню и измените атрибут: изменить атрибут переменной на Edit_menu и измените текст для редактирования (e);
2.1 Настройки подменю: отменить (u) ctrl+z
Выберите элемент меню, чтобы добавить в компонент меню Cascde, измените атрибут: изменить атрибут переменной для отмены и измените текст на: undo (u) ctrl+z и изменение включения на false;
2.2 Настройки подменю: Cut (t) Ctrl+T
Выберите элемент меню, чтобы добавить в компонент меню Cascde, измените атрибут: измените атрибут переменной для вырезания и измените текст на: Cut (t) Ctrl+T и изменение включения на false;
2.3 Настройки подменю: копирование (c) Ctrl+c
Выберите элемент меню, чтобы добавить в компонент меню Cascde, измените атрибут: изменить атрибут переменной для копирования и изменить текст на: копию (C) Ctrl+C и изменение включения на false;
2.4 Настройки подменю: вставка (p) ctrl+v
Выберите элемент меню, чтобы добавить в компонент меню CascDe, измените атрибут: измените атрибут переменной для вставки и измените текст на: вставка (p) ctrl+v
2.5 Настройки подменю: удалить (l) del
Выберите элемент меню, чтобы добавить в компонент меню Cascde, измените атрибут: изменить атрибут переменной для удаления и изменить текст на: удалить (l) del и изменить включение на false;
2.6 Настройки подменю: найти (d) ctrl+f
Выберите элемент меню, чтобы добавить в компонент меню Cascde, измените атрибут: измените атрибут переменной, чтобы найти, и измените текст на: найти (d) ctrl+f и изменить включение на false;
2.7 Настройки подменю: Найдите следующее место (n) F3
Выберите элемент меню, чтобы добавить в компонент меню Cascde, измените атрибут: измените атрибут переменной на find_next и измените текст на: найти следующее место (n) f3 и изменить включение на false;
2.8 Настройки подменю: замените (r) ctrl+h
Выберите элемент меню, чтобы добавить в компонент меню Cascde, измените атрибут: измените атрибут переменной, чтобы заменить, и измените текст на: заменить (r) ctrl+h и изменить включение на false;
2.9 Настройки подменю: перейдите к (g) Ctrl+G
Выберите элемент меню, чтобы добавить в компонент меню Cascde, измените атрибут: изменить атрибут переменной на GO_TO и измените текст на: перейти на (g) ctrl+g
2.10 Настройки подменю: выберите все (a) ctrl+a
Выберите элемент меню, чтобы добавить в компонент меню Cascde, измените атрибут: изменить атрибут переменной на Selectall и измените текст на: выберите All (a) Ctrl+A
2.11 Настройки подменю: время/дата (D) F5
Выберите элемент меню, чтобы добавить в компонент меню Cascde, измените атрибут: изменить атрибут переменной на Showdate и измените текст на: время/дата (d) F5
3. Установите третий пункт меню (формат)
Выберите компонент меню Cascde, перетащите его в компонент панели меню и измените атрибут: изменить атрибут переменной на format_menu и изменить текст в формат (o);
3.1 Настройки подменю: автоматическая линейная упаковка (w)
Выберите элемент меню, чтобы добавить в компонент меню CASCDE, измените атрибут: изменить атрибут переменной на Auto_Enter и измените текст на: Automatic Line Prap (w)
3.2 Настройки подменю: шрифт (F)
Выберите элемент меню, чтобы добавить в компонент меню CASCDE, измените атрибут: изменить атрибут переменной на SetFont и измените текст на: font (f)
4. Установите элемент четвертого меню (просмотр)
Выберите компонент меню Cascde, перетащите его в компонент панели меню и измените атрибут: изменить атрибут переменной на View_menu и измените текст для просмотра (v);
4.1 Настройки подменю: строка состояния (ы)
Выберите элемент меню, чтобы добавить в компонент меню CASCDE, измените атрибут: изменить атрибут переменной в состояние и изменить текст на: строки состояния (ы)
5. Установите предмет пятого меню (помощь)
Выберите компонент меню Cascde, перетащите его в компонент панели меню и измените атрибут: изменить атрибут переменной на help_menu и изменить текст, чтобы помочь (h);
5.1 Настройки подменю: Просмотреть справку (h)
Выберите элемент меню, чтобы добавить его в компонент меню Cascde, измените атрибут: измените атрибут переменной на LookHelp и измените текст на: Просмотреть справку (h)
5.2 Настройки подменю: о Блокноте (а)
Выберите элемент меню, чтобы добавить его в компонент меню Cascde, измените атрибут: измените атрибут переменной на Aboutauthor и измените текст на: о Notepad (a)
На этом этапе рендеринг всего макета страницы был установлен следующим образом:
Далее реализуйте различные функции
три. Настройки меню ярлыки
Введение в функцию SetAccelerator () : используйте функцию setAccelerator (), чтобы установить соответствующие ярлыки. Продолжительные параметры являются ключевыми значениями. Например, клавиша ярлыка Ctrl+N установлен как: объект. SetAccelerator (swt.ctrl+'n');
Метод настройки клавиши сочетания F5 : Object.SetAccelerator (SWT.F5);
Из этого мы можем установить все необходимые ярлыки клавиш
new_file.setaccelerator (swt.ctrl + 'n'); // Создать новый сочетание файла open_file.setaccelerator (swt.ctrl + 'o'); // Сохранить ярлык файла undo.setaccelerator (swt.ctrl + 'z'); // отменить ярлык cut.setaccelerator (swt.ctrl + 't'); // сократить ярлык copy.setaccelerator (swt.ctrl + 'c'); // Скопируйте ярлык paste.setaccelerator (swt.ctrl + 'v'); // Вставьте клавиш ярлыки delete.setaccelerator (swt.del); // Удалить клавишу сочетания find.setaccelerator (swt.ctrl + 'f'); // Найти клавишу ярлыка find_next.setaccelerator (swt.f3); // Найти следующий клавиш ярлыка reply.setaccelerator (swt.ctrl + 'h'); // заменить клавишу сочетания go_to.setaccelerator (swt.ctrl + 'g'); // Перейдите в клавишу сочетания selectall.setaccelerator (swt.ctrl + 'a'); // выберите все клавиши ярлыков showdate.setaccelerator (swt.f5); // показать клавиши ярлыков времени
4. Добавить функцию слушания события (1) Класс файлов
Добавить функцию прослушивания событий в каждое меню файла
1. Добавить событие «Выход» в меню
Описание функции: реализация запуска этого меню для выхода из приложения относительно проста. Вызовать системную функциональную систему. Exit (0); Вы можете щелкнуть компонент «Время/дата (F5)» в режиме проектирования, а затем нажать «Показать событие»-> Выбор-> Дважды щелкните виджет
Код события выглядит следующим образом:
quit.addselectionlistener (new SelectionAdapter () { / *** Добавить событие прослушивания "Exit" Menu* Описание функции: Запуск этого меню выйдет из приложения* / public void widgetSelected (selectionEvent e) {System.Exit (0);}});Но просто так просто? На самом деле, это не тот случай, когда вы можете просто нажать, чтобы выйти, а затем выйти напрямую. При выходе из реального блокнота все еще есть намеки, поэтому улучшенный код заключается в следующем;
public void diyquit () { / *** При выходе из функции определите, необходимо ли сохранить его* / String Tips; System.out.println (util.shell.getText (). GetText ()); if (util.shell.filedir! = null || util.shell.getText (). getText ()! = "") {// Файл -каталог не пуст, что означает, что есть открытый файл. Вам нужно спросить, сохранить ли его, если (util.shell.filedir == null) {tips = «текст без названия файла изменился. /N"+"Вы хотите сохранить файл?"; } else {tips = "file" + util.shell.filedir + "Текст" изменился. /n "+", вы хотите сохранить файл? "} int n = joptionpane.showconfirmdialog (null, tip," notepad ", joptionpane.yes_no_cancel_option); if (n == 0) {// yes return 0 returf 1 return 2 savemethod = new savemethod;); /savemethod;); Сохраните файл и откройте файл} else (n == 1) {// not system.exit (0); TIPS = «Текст без названия файла изменился. /n "+" Вы хотите сохранить файл? "; int n = joptionpane.showconfirmdialog (null, tips," notepad ", joptionpane.yes_no_cancel_option); if (n == 0) {// yes return 0 naturel 1 return 2 savemethod savemethod = new savemethod (); /savemetd; Файл и откройте файл} else (n == 1) {// not system.exit (0);Я определяю каждую операцию в следующем событии прослушивания как функцию. Метод добавления событий прослушивания совпадает с первым шагом. Конкретный метод реализации следующим образом:
2. Добавьте меню «Сохранить как», чтобы слушать события
Описание функции: запустите это меню, и появится окно Сохранить, и сохранить файл, как и в других местах. Чтобы облегчить повторное использование кода, сохраните как инкапсуляцию его в метод и вызовите код следующим образом:
public void saveas () { / *** инкапсулирует его как этот метод для облегчения вызова* / filedialog dialog = new Filedialog (util.shell.shell, swt.save); dialog.setFilterPath (System.getProperty ("c: // документы и настройки")); // Установить путь по умолчанию на открытый dialog.setfilterextensions (new String [] {"*.txt", "*.*"}); // Установить расширение открытого файла Dialog.setFiLEnternames (new String [] {"Text Files (*.txt)", "All Files (*.*)"}); // Установите имя расширения, отображаемое в раскрывающемся поле string file = dialog.open (); // открыть окно и вернуться в каталог файлов, выбранные пользователем if (file! = Null) {util.shell.filedir = file; // Сохранить файл, используйте позже} if (file! file.trim ())). getName ()); // Получить имя файла (исключая путь), чтобы установить заголовок файлов файла файла; try {fileWriter = new FileWriter (file); BufferedWriter Out = new BufferedWriter (FileWriter); out.write (util.shell.getText (). getText ()); out.close (); filewriter.close (); } catch (ioException e1) {e1.printstacktrace (); }}}3. Добавьте мероприятие «Сохранить» меню
Описание функции: когда запускается меню «Сохранить», появляется окно «Сохранить файл», а затем выберите каталог и введите имя файла для сохранения. Что касается логики сохранения, я должен поговорить о сохранении здесь: в начале я думал о том, как определить, сохраняется или сохранен текущий документ. Позже я тщательно заметил блокнот настольных компьютеров и обнаружил, что диалоговое окно появляется в сохранении и сохранении, как и то же самое. Вам нужно лишь иметь небольшую разницу, чтобы определить, сохранять или сохранить или сохранить, поскольку решение следующим образом: если оно сохранено, это означает, что Filedir существует, и вы можете напрямую вызвать сохраненную функцию. Если Filedir не существует, это означает, что файл вновь открыт, и путь еще не был определен, поэтому прыгайте, чтобы сохранить как форму.
Во -первых, определите глобальную переменную строку filedir = null; Назначьте его пустому, и все файлы не сохраняются по умолчанию. Затем, независимо от того, чтобы открыть файл или сохранить его в качестве файла, каталог, в котором находится файл (включая имя файла и имя суффикса), записывается в Filedir, и, наконец, определить, является ли FiLedir пустым в событии сохранения.
Код заключается в следующем:
public void saip () { / *** Сохранить файл* / if (util.shell.filedir! = null) {// означает, что файл имеет каталог и сохраняет его напрямую при сохранении, и нет необходимости всплыть в util.shell.shell.settext ((новый файл (util.shell.filedir.trim ())) // Получить имя файла (за исключением пути), чтобы установить заголовок файлов файла файла; try {filewriter = new FileWriter (util.shell.filedir); BufferedWriter Out = new BufferedWriter (FileWriter); out.write (util.shell.getText (). getText ()); out.close (); filewriter.close (); } catch (ioException e1) {e1.printstacktrace (); }} else {// в противном случае он никогда не сохраняется, затем сохраняет как window saveas (); }}4. Добавьте мероприятие «Открыть» прослушивание меню
Описание функции: когда запускается меню «Открыть», появляется окно открытого файла, а затем выберите файл для открытия. Чтобы повторно использовать код, метод открытия инкапсулируется в код функции следующим образом:
public void openFile () {if (util.shell.filedir! = null || util.shell.getText (). getText ()! /n "+" Вы хотите сохранить файл? "; int n = joptionpane.showconfirmdialog (null, tips," notepad ", joptionpane.yes_no_cancel_option); if (n == 0) {// yes return 0 nevert 1 return 2 savemethod savemethod = new savemetod (); / /savemethod ();); / /savemethod ();); / /savemethod; Файл и откройте файл} else if (n == 1) {// return no} else if (n == 2) {// return return; dialog.setFilterExtensions (new String [] {"*.txt", "*.*"}); // Установить расширение открытого файла dialog.setFilternames (new String [] {"Text Files (*.txt)", "All Files (*.*)"}); // Установить название расширения, отображаемого в string string dialog. Файл -каталог, выбранная пользователем (включая имя файла) if (file = null) {return; BufferedReader in = new BufferedReader (FileReader); e1.printstacktrace ();5. Добавьте событие «Новое» прослушивания меню
Описание функции: Когда событие запускается, создайте новое окно. Если текущий файл не сохранен, ему предлагается сохранить его, в противном случае новая страница будет подпрыгнута для генерации.
Принцип создания новой страницы: повторно инициализировать заголовок, инициализировать Filedir и инициализировать домен редактирования. Здесь вы извлекаете код, чтобы открыть новый файл в метод, который удобен для вызова кода следующим образом:
void opennewFile () {if (util.shell.filedir! = null || util.shell.getText (). getText ()! /n "+" Вы хотите сохранить файл? "; int n = joptionpane.showconfirmdialog (null, tips," notepad ", joptionpane.yes_no_cancel_option); if (n == 0) {// yes return 0 nate 1 retence 2 savemethod savemethod = new savemethod (). Файл} else if (n == 1) {// return no} else if (n == 2) {// return return;} Util.shell.filedir = null;4. Добавить функцию прослушивания событий (2) редакционные классы
Добавить функцию прослушивания событий для каждого меню
1. Добавьте меню «Показ времени», чтобы слушать события
Описание функции: Когда событие запускается, системное время будет отображаться в курсоре в поле «Редактировать»: Получите текущее системное время, преобразовать его в тип строки, а затем вызовите метод Text.Append (Str), чтобы отобразить время после курсора редактирования.
1.1 Добавьте функцию слушания события, чтобы получить текущий метод времени системы: Call SimpleDateFormat объекта для форматирования времени, а затем дату вызовит, чтобы получить время.
Проблема в начале: она может быть добавлена только в конце контента каждый раз. Если вы подумаете об этом внимательно, вы должны найти текущую позицию курсора, а затем развязать строку перед курсором + строка после курсора, а затем отобразить ее вместе.
Я давно искал и обнаружил, что GetCaretPosition () только что возвращается как пластик, который должен быть тем, которая получает текущую позицию курсора. Я попробовал это, как и ожидалось. Далее следует реализовать технологию сплайсинга строк: S1.Substring (0, Index) + S2 + S1.Substring (index, s1.length ());
Возвращенная новая строка.
Проблемы, которые возникают: после сплайсинга вывод сгенерируется непосредственно, в результате чего предыдущий контент был сплайсирован с новыми строками позже. После долгих изменений я обнаружил, что мне нужно вызвать метод SetText (String). Перед выводом сначала очистите содержимое, отображаемое в предыдущем поле редактирования. Окончательное содержание функции прослушивания следующим образом:
showdate.addselectionlistener (new SelectionAdapter () { /*** Добавить событие прослушивания «Время и дата» меню* Описание функции: Запустите это меню, чтобы добавить текущее системное время к концу курсора в блоке редактирования* /public void widgetsed (selectionevent e) {intex = getText () get -get the get the octule vestoretposition (); Box // System.out.println (Index); getText (). setText ("");Функция сплайсинговой строки выглядит следующим образом:
public String INSERTSTRING (String S1, String S2, Int Index) { / *** Реализуйте функцию вставки строки* Три параметра, передаваемые в: исходная строка, строка для вставки, и позиция вставки* возвращаемой - вставленная строка* / return s1.substring (0, index) + s2 + s1.substring (index, s1 }2. Добавьте меню «Выбрать все», чтобы прослушать события
Описание функции: запустите это меню, чтобы выбрать все строки текстового поля
Коробка редактирования в Java на самом деле поставляется с функцией выбора всех. Ха -ха, вы можете позвонить в Text.selectall () напрямую. По оценкам, есть также готово копирование и вставка. Я почти забыл. После выбора всего вам необходимо определить, пустого ли выбранного контента. Если он не пуст, вам нужно установить кнопки «Удалить» и «вырезать», чтобы необязательно выбрать все коды следующим образом:
selectall.adddselectionlistener (new SelectionAdapter () { /*** Добавить событие прослушивания «Select All Menu* Описание функции: запустите меню, чтобы выбрать все тексты в текстовом поле и установить« DEDETE »и« Вырезать »кнопки« Необязательно* /public idgigted (selectectevent e) {getText (). if (getText (). getText ()!3. Добавить событие меню «вырезать»
Описание функции: запустите это меню, реализуйте код метода Cut () в поле редактирования, который напрямую вызывает метод Cut () в поле «Редактировать» следующим образом:
Cut.AddselectionListener (новый SelectionAdapter () { / *** Добавить событие прослушивания "Cut" Menu* Описание функции: запустите это меню, чтобы вырезать выбранную строку* / public void widgetSelected (selectionEvent e) {getText (). Cut ();}});4. Добавить событие меню «Вставка»
Описание функции: запустите это меню, и реализуйте код метода PAST (), который непосредственно вызывает поле «Редактировать», вставив содержимое буфера обмена следующим образом:
Paste.AddSelectionListener (New SelectionAdapter () { / *** Добавить событие прослушивания «Вставка» меню* Описание функции: запустите это меню, чтобы вставить содержимое в буфер обмена в поле редактирования* / public void widgetSelected (selectionevent e) {getText (). Past ();}});5. Добавьте меню «Копировать», чтобы прослушать события
Описание функции: запустите это меню, реализуйте код метода Copy (), который напрямую вызывает поле «Редактировать», копировав выбранное содержимое следующим образом:
copy.addselectionlistener (новый SelectionAdapter () { / *** Добавить событие прослушивания «Cut» Menu* Описание функции: запустите это меню, чтобы вырезать выбранную строку* / public void widgetSelected (selectionEvent e) {text.copy ();}6. Добавьте событие меню «Отменить»
Описание функции: запустите это меню, отмените текущую операцию, отмените алгоритм, участвующий в этой функции, является сложным. В настоящее время этот блокнот не поддерживает метод отменить кнопку, но поддерживает правой кнопкой мыши undo (текстовый компонент Java поставляется с ней, когда щелкнуть правой кнопкой мыши, отменить меня, хаха)
7. Добавьте меню «Найти», чтобы послушать события
Описание функции: запустите это меню и выполните операцию поиска
Найти. AddselectionListener (New SelectionAdapter () { / ** * Диалоговое окно для добавления функции поиска, где вам нужно нажать, а затем появляется диалоговое окно, введите соответствующее содержание поиска * / public void widgetSelected (selectionevent e) {findwindow fw = new Findwindow (shell, swt.dial_trim);4. Добавить функцию прослушивания событий (3) вспомогательный класс
В дополнение к нескольким событиям меню в строке меню вам также необходимо прослушать события клавиатуры. То есть, если на клавиатуре будет вызвано текстовое поле, будет запускается отображение соответствующего меню: отменить, найти, найти и найти следующее место, замените эти четыре меню и установите его на необязательные
1. Прослушивание текстовых полей
getText (). AddKeyListener (new KeyAdapter () {/*** Установите события прослушивания клавиатуры* Если у вас есть типирование клавиатуры, вам нужно установить соответствующие кнопки, которые будут видимыми: отмену, поиск и найдите следующее место*/public keyreled (keyEvent e) {if (getText (). getText () = "") {//indicent, что есть вход. find_next.setenabled (true);2. Реализуйте функцию прослушивания событий в меню «Фонт»
Код заключается в следующем:
setFont.AddSelectionListener (новый SelectionAdapter () { / *** Установите событие прослушивания Font* / public void widgetSelected (selectionEvent e) {fontdialog fontdialog = new fontdialog (shell, swt.none); font oldfont = getText (). getFont (); if (oldfont! fontdialog.setfontlist (oldfont.getfontdata ()); ! = null) {oldfont.dispose ();}}});пять. Настройки тега формы
Извлеките основную функцию в тестовый класс, параметризуйте заголовок формы блокнота и передайте начальную метку в основную функцию: «UNT название Блокнота»
Конструктор параметров определяется в классе формы main_window, и переданные параметры являются конструктором названия заголовка следующим образом:
Main_window (строка titlename) { / *** Параметр, передаваемый с помощью конструкции параметра - это имя файла* / this.titlename = titlename; } Обратите внимание, что название программного обеспечения: Блокнот без названия. При открытии файла заголовок - это имя открытого файла. При сохранении сохраненного имени файла заголовок является сохраненным именем файла. При сохранении имя файла является сохраненным именем файла. Метод получения имени файла (не включая путь):
shlnotepad.settext ((новый файл (filedir.trim ())). getName ()); // Получить имя файла (исключая путь), чтобы установить заголовок
Для простоты я сократил его как код предложения
Установите значок программы, поместите его в каталог проектов, и вы можете напрямую представить его для использования
Думаю: при побуждении пользователя сохранять, вы не можете просто посмотреть, пуст ли путь. Вы должны проверить, нажата ли клавиатура, то есть есть ли какие-либо изменения, и изменился ли контент (можно щелкнуть правой кнопкой мыши, чтобы удалить ее напрямую и не проходило через клавиатуру)
6. Определение диалоговых окнов ДРУГИЕ ДЛЯ ДРУГИХ ТРИ
1. Найдите диалоговое окно
Также щелкните правой кнопкой мыши недавно созданный пакет new-> orhean-> windowbuilder-> SWT Designer-> SWT-> Диалог с именем FindWindow
Результаты следующие:
Это окно используется здесь, поиск, замена и поиск следующего места. Поле редактирования контента поиска может запустить кнопку, чтобы нажать. Редактирование контента поиска и коробка для замены не пусты. Функция замены может быть вызвана. Вот список поиска в следующем месте и корпус метода замены для поиска следующего места:
Идея: сначала получите все строки в главном окне, затем получите контент, который необходимо искать, напрямую вызовите функцию строки поиска, предоставленную Java, чтобы получить начальный индекс, а затем добавьте содержимое поиска в длину длины строки, которая является строкой, которую необходимо отобрать, а затем вызовите функцию рендеринга в главное окно, чтобы отобразить строку, а затем отобразить ее.
Конкретный код заключается в следующем:
find_next.addselectionListener (new SelectionAdapter () {@Override public void widgetSelected (selectionEvent e) {parestR = util.shell.getText_1 (); // Получить содержимое текстового окна главного окна -1) index+textContent.getText (). Length ();Кнопка замены запускает событие следующим образом;
replybtBtn.AddSelectionListener (новый SelectionAdapter () { /*** Заменить кнопку события* /public void widgetSelected (selectionevent e) {parestr = util.shell.gettext_1 (); // Получить контент текстового окна главного окна parestrest. }});2. Создание диалогового окна Aboutauthor
Создание этого диалогового окна такое же, как в диалоговом окне поиска. Назовите это о Ауэрте. Конкретные визуализации следующие:
В этом диалоговом окне не связаны связанные алгоритмы. Добавьте три теги Jlabel и введите три предложения.
3. Создание диалогового окна GO_TO
Я не скажу много о методе создания диалогового окна. Конкретные визуализации следующие:
Реализация кода выглядит следующим образом:
Queding.AddSelectionListener (New SelectionAdapter () { / *** Подтвердить, чтобы перейти к определенной строке* / public void widgetSelected (selectionevent e) {int n = integer.parseint (goto_line.gettext ()); goto_line.settext (" + n +" ");Вызовите метод gotooneline () в главном окне
public void gotooneline (int row) {getText (). setSelection (row); }На этом этапе общие функции всего блокнота были завершены
7. Резюме
С самого начала написания до окончательного завершения, это заняло около 2-3 дней. Я выучил много связанных алгоритмов. Программирование Java очень удобно. Многие методы не должны быть реализованы мной. Вы можете просто позвонить им напрямую. Тем не менее, у Java также есть много недостатков. Например, я использовал диалоговое окно, принадлежащее Java, чтобы закрыть окно. Результат был особенно застрял. If you are interested, you can customize the exit dialog box. Just change the included three-choice dialog box to a custom dialog box. At the same time, the previous one was only for learning and did not consider the efficiency of the algorithm. For example, opening a file operation, it only implemented the function, but did not consider the timeliness of the algorithm. The method used in this example is to read the file by line. You can try to open a text document with thousands of lines by yourself, and you can feel the importance of the algorithm. Also, upward search has not been implemented. The preliminary idea is: find the coordinates that need to be found, and then start to go back from the position of the coordinates you are looking for, and invert the search content, and then call the string search function that comes with Java.
Например:
母串为“ab记事本def3g” 需要从”3”这个字符串开始向前查找”记事本”字符串,可将母串中”3”字符串所在位置之前的字符串”ab记事本def”完全倒置为”g3fed本事记ba” 将查找内容也倒置成”本事记” 再调用Java内带的字符串查找函数查找所在位置,再还原即可。
以上就是手把手编写记事本的详细步骤,Java基于SWT插件编写桌面记事本应用程序,希望对大家的学习有所帮助。