Artikel ini memperkenalkan proses terperinci Java Writing Notepad berdasarkan SWT. Ini dibagikan kepada Anda untuk referensi Anda. Konten spesifiknya adalah sebagai berikut
Ini dapat mewujudkan fungsi dasar notepad desktop dalam sistem Windows, pengajaran bergaya bodoh, dan operasi langkah demi langkah. Xiaobai juga dapat menulis aplikasi lengkap sendiri.
Alat yang Diperlukan: Eclipse (dengan plug-in SWT)
Produk jadi adalah sebagai berikut:
PENDAHULUAN FUNGSI APLIKASI:
Analisis Fungsional:
Menu file termasuk
1.1. Buat (n) ctrl+n
1.2open (O) Ctrl+O.
1.3Save (S) Ctrl+S.
1.4Save as (a)
1.5 Keluar (x)
Menu edit termasuk:
2.1 Undo (U) Ctrl+Z
2.2 Shear (T) Ctrl+T
2.3 Salin (c) Ctrl+C
2.4 Tempel (P) Ctrl+V
2.5 hapus (l) del
2.6 Temukan (d) Ctrl+F
2.7 Temukan tempat berikutnya (n) F3
2.8 Ganti (R) Ctrl+H
2.9 Pergi ke (g) Ctrl+G
2.10 Pilih semua (a) Ctrl+a
2.11 Waktu/Tanggal (D) F5
Menu Format Termasuk
3.1 Bungkus Garis Otomatis (W)
3.2 Font (f)
Menu tampilan termasuk
4.1 Bilah status
Menu bantuan termasuk
5.1 Lihat Bantuan (h)
5.2 Tentang Notepad (A)
Selanjutnya, saya akan mengajari Anda langkah demi langkah untuk menulis notepad dengan beberapa kategori spesifik sebagai berikut:
1. Notepad.java
Kelas ini adalah kelas antarmuka utama, yang berisi peristiwa mendengarkan setiap tombol
2. Kelas util.java Kelas ini adalah kelas tambahan, yang memfasilitasi anggota panggilan yang ditentukan di kelas jendela utama di kelas lain.
3. Tentang ATAuthor.java
Tentang kelas penulis, jendela dialog untuk menampilkan informasi penulis
4.findWindow.java
Jendela dialog untuk fungsi pencarian
5.go_to.java
Buka jendela dialog fungsi
6.openmethod.java
Ada dua cara untuk membuka file yang dienkapsulasi
7.Savamethod.java
Dua cara untuk menyimpan file
8.swtrsourcemanager.java
Kelas ini adalah kelas yang diimpor secara eksternal dan digunakan untuk memuat gambar
9.test.java
Entri program, file jaring paket yang nyaman nanti
10.quitmethod.java
Dua cara untuk menutup jendela dienkapsulasi
Langkah Menulis:
satu. Buat proyek SWT baru dan buat jendela pertama
Buka Eclipse, New-> Other-> WindowBuilder-> SWT Designer-> SWT/JFACE Java Project. Sebutkan nama proyek Notepad
Buka proyek Notepad yang baru dibuat, klik kanan- Paket baru> di SCR untuk membuat paket baru, bernama com.chance.org
Kiat: Aturan penamaan paket paling baik digunakan untuk menggunakan com. custom.org. Jangan tanya mengapa, Anda akan mengerti setelah bekerja di masa depan.
Klik kanan Paket yang baru dibuat baru-> Lainnya-> WindowBuilder-> SWT Designer-> SWT-> Nama jendela aplikasi Notepad
Pada titik ini, kami membangun jendela SWT pertama dan mengklik desain di sisi kanan sumber untuk melihat antarmuka grafis dari nomor yang baru dibuat untuk mewujudkan pemrograman visual.
Ubah nama properti txt di properti dalam bentuk notepad menjadi: notepad
Seret komponen komposit dalam komposit ke dalam komponen notepad, dan memodifikasi properti tata letaknya menjadi filllayout, yaitu tata letak pengisian, sehingga seluruh antarmuka dapat diubah menjadi domain pengeditan nanti. Kemudian seret komponen teks ke dalam komponen Composites. Periksa atribut h_scroll dan atribut v_scroll dalam gaya properti komponen teks ke true
Deskripsi: H_Scroll adalah bilah gulir horizontal, V_Scroll adalah bilah gulir vertikal
dua. Atur label terkait bilah menu dan tata letak keseluruhan formulir
Pilih Komponen Menu Bar untuk menyeretnya ke formulir utama
1. Atur item menu pertama (file)
Pilih komponen menu CASCDE, seret ke komponen bilah menu, dan ubah atribut: Ubah atribut variabel ke file_menu, dan ubah teks ke file (f);
1.1 Pengaturan Submenu: Buat (n) Ctrl+n
Pilih item menu untuk ditambahkan ke komponen menu CASCDE, ubah atribut: Ubah atribut variabel ke new_file, dan ubah teks ke: baru (n) ctrl+n;
1.2 Pengaturan Subtremenu: Buka (O) Ctrl+O
Pilih item menu untuk ditambahkan ke komponen menu CASCDE, ubah atribut: Ubah atribut variabel ke open_file, dan ubah teks ke: buka (o) ctrl+o
1.3 Pengaturan Subtremenu: Simpan (o) Ctrl+S
Pilih item menu untuk ditambahkan ke komponen menu cascde, ubah atribut: Ubah atribut variabel ke save_file, dan ubah teks ke: simpan (o) ctrl+s
1.4 Pengaturan submenu: Simpan sebagai (a)
Pilih item menu untuk ditambahkan ke komponen menu CASCDE, ubah atribut: Ubah atribut variabel ke save_as, dan ubah teks ke: simpan sebagai (a)
1.5 Pengaturan submenu: Keluar (x)
Pilih item menu untuk ditambahkan ke komponen menu CASCDE, ubah atribut: Ubah atribut variabel untuk berhenti, dan ubah teks ke: Keluar (x)
2. Atur item menu kedua (edit)
Pilih komponen menu CASCDE, seret ke komponen bilah menu, dan ubah atribut: Ubah atribut variabel ke edit_menu, dan ubah teks yang akan diedit (e);
2.1 Pengaturan Submenu: Undo (U) Ctrl+Z
Pilih item menu untuk ditambahkan ke komponen menu CASCDE, ubah atribut: Ubah atribut variabel untuk membatalkan, dan memodifikasi teks ke: undo (u) ctrl+z, dan ubah mengaktifkan ke false;
2.2 Pengaturan submenu: potong (t) ctrl+t
Pilih item menu untuk ditambahkan ke komponen menu CASCDE, ubah atribut: Ubah atribut variabel yang akan dipotong, dan ubah teks menjadi: potong (t) ctrl+t, dan ubah mengaktifkan ke false;
2.3 Pengaturan Submenu: Salin (c) Ctrl+C
Pilih item menu untuk ditambahkan ke komponen menu CASCDE, ubah atribut: Ubah atribut variabel untuk disalin, dan ubah teks ke: salin (c) ctrl+c, dan ubah mengaktifkan ke false;
2.4 Pengaturan submenu: Tempel (P) Ctrl+V
Pilih item menu untuk ditambahkan ke komponen menu cascde, ubah atribut: Ubah atribut variabel untuk menempel, dan memodifikasi teks ke: paste (p) ctrl+v
2.5 Pengaturan Submenu: Hapus (l) Del
Pilih item menu untuk ditambahkan ke komponen menu CASCDE, ubah atribut: Ubah atribut variabel untuk menghapus, dan memodifikasi teks ke: hapus (l) del, dan ubah Aktifkan ke false;
2.6 Pengaturan submenu: temukan (d) ctrl+f
Pilih item menu untuk ditambahkan ke komponen menu CASCDE, ubah atribut: Ubah atribut variabel yang harus ditemukan, dan ubah teks ke: temukan (d) ctrl+f, dan ubah mengaktifkan ke false;
2.7 Pengaturan Subtremenu: Temukan tempat berikutnya (n) F3
Pilih item menu untuk ditambahkan ke komponen menu CASCDE, ubah atribut: Ubah atribut variabel ke find_next, dan ubah teks ke: temukan tempat berikutnya (n) f3, dan ubah mengaktifkan ke false;
2.8 Pengaturan submenu: ganti (r) ctrl+h
Pilih item menu untuk ditambahkan ke komponen menu CASCDE, ubah atribut: Ubah atribut variabel untuk diganti, dan memodifikasi teks ke: mengganti (r) ctrl+h, dan ubah mengaktifkan ke false;
2.9 Pengaturan Subwenu: Pergi ke (g) Ctrl+G
Pilih item menu untuk ditambahkan ke komponen menu cascde, ubah atribut: Ubah atribut variabel ke go_to, dan ubah teks menjadi: buka (g) ctrl+g
2.10 Pengaturan Submenu: Pilih semua (a) Ctrl+a
Pilih item menu untuk ditambahkan ke komponen menu CASCDE, ubah atribut: Ubah atribut variabel untuk SelectAll, dan ubah teks ke: pilih semua (a) ctrl+a
2.11 Pengaturan Subtremenu: Waktu/Tanggal (D) F5
Pilih Item Menu untuk ditambahkan ke komponen menu CASCDE, ubah atribut: Ubah atribut variabel ke ShowDate, dan ubah teks ke: waktu/tanggal (d) f5
3. Atur item menu ketiga (format)
Pilih komponen menu CASCDE, seret ke komponen bilah menu, dan ubah atribut: Ubah atribut variabel ke format_menu, dan ubah teks untuk format (o);
3.1 Pengaturan Submenu: Bungkus Garis Otomatis (W)
Pilih item menu untuk ditambahkan ke komponen menu CASCDE, ubah atribut: Ubah atribut variabel ke auto_enter, dan ubah teks ke: bungkus garis otomatis (w)
3.2 Pengaturan Subtremenu: Font (f)
Pilih item menu untuk ditambahkan ke komponen menu CASCDE, ubah atribut: Ubah atribut variabel ke setFont, dan ubah teks ke: font (f)
4. Atur item menu keempat (Lihat)
Pilih komponen menu CASCDE, seret ke komponen bilah menu, dan ubah atribut: Ubah atribut variabel ke view_menu, dan ubah teks yang akan dilihat (v);
4.1 Pengaturan Subtremenu: Status Bar (S)
Pilih item menu untuk ditambahkan ke komponen menu CASCDE, ubah atribut: Ubah atribut variabel ke status, dan ubah teks ke: bilah status
5. Atur item menu kelima (bantuan)
Pilih komponen menu CASCDE, seret ke komponen bilah menu, dan ubah atribut: Ubah atribut variabel ke help_menu, dan ubah teks untuk membantu (h);
5.1 Pengaturan Submenu: Lihat Bantuan (h)
Pilih Item Menu untuk Menambahkannya ke Komponen Menu CASCDE, Ubah Atribut: Ubah Atribut Variabel ke LookHelp, dan Ubah Teks ke: Lihat Bantuan (h)
5.2 Pengaturan submenu: Tentang notepad (a)
Pilih Item Menu untuk Menambahkannya ke Komponen Menu CASCDE, Ubah Atribut: Ubah Atribut Variabel ke Telah Sekitar, dan Ubah Teks ke: Tentang Notepad (a)
Pada titik ini, rendering seluruh tata letak halaman telah ditetapkan sebagai berikut:
Selanjutnya, terapkan berbagai fungsi
tiga. Pengaturan Menu Pintasan Kunci
Pengantar fungsi setaccelerator () : Gunakan fungsi setaccelerator () untuk mengatur tombol pintasan yang relevan. Parameter yang diteruskan adalah nilai utama. Misalnya, kunci pintasan Ctrl+n diatur sebagai: objek. setaccelerator (swt.ctrl+'n');
Metode Pengaturan F5 Kunci Pintasan adalah: Object.setaccelerator (SWT.F5);
Dari sini kita dapat mengatur semua kunci pintasan yang diperlukan
new_file.setaccelerator (swt.ctrl + 'n'); // Buat shortcut file baru open_file.setaccelerator (swt.ctrl + 'o'); // Simpan file shortcut undo.setaccelerator (swt.ctrl + 'z'); // lepaskan cut.setaccelerator (swt.ctrl + 't'); // potong copy.setaccelerator (swt.ctrl + 'c'); // Salin pasta pintasan.setaccelerator (swt.ctrl + 'v'); // Tempel ke tombol shortcut delete.setaccelerator (swt.del); // hapus tombol pintas find.setaccelerator (swt.ctrl + 'f'); // Temukan tombol pintas find_next.setaccelerator (swt.f3); // Temukan tombol pintasan berikutnya REPLACE.SSECCELERATOR (SWT.CTRL + 'H'); // ganti tombol pintasan go_to.setaccelerator (swt.ctrl + 'g'); // Pergi ke tombol pintas selectAll.setaccelerator (swt.ctrl + 'a'); // pilih semua tombol pintasan showdate.setaccelerator (swt.f5); // tunjukkan kunci pintasan waktu
4. Tambahkan Fungsi Mendengarkan Acara (1) Kelas File
Tambahkan fungsi mendengarkan acara ke setiap menu file
1. Tambahkan acara mendengarkan menu "Keluar"
Deskripsi Fungsi: Implementasi memicu menu ini untuk keluar dari aplikasi relatif sederhana. Panggil sistem fungsi sistem.exit (0); Anda dapat mengklik komponen "Waktu/Tanggal (F5)" dalam mode desain dan kemudian klik "Tampilkan Acara"-> Seleksi-> Klik dua kali WidgetSelected
Kode acara adalah sebagai berikut:
QUIT.ADDSElectionListener (New selectionAdapter () { / *** Tambahkan acara mendengarkan dari menu "Keluar"* Fungsi Deskripsi: Memicu menu ini akan keluar dari aplikasi* / public void widgetSelected (selectionEvent e) {System.exit (0);}});Tapi apakah fakta sesederhana itu? Bahkan, bukan itu masalahnya Anda hanya bisa mengklik untuk keluar dan kemudian keluar secara langsung. Masih ada petunjuk saat berhenti di notepad nyata, jadi kode yang ditingkatkan adalah sebagai berikut;
public void diyquit () { / *** Saat keluar dari fungsi, tentukan apakah perlu menyimpannya* / string Tips; System.out.println (util.shell.getText (). GetText ()); if (util.shell.filedir! = null || util.shell.getText (). getText ()! = "") {// Direktori file tidak kosong, yang berarti ada file terbuka. Anda perlu bertanya apakah akan menyimpannya jika (util.shell.filedir == null) {tips = "Teks tanpa judul file telah berubah. /N"+"Apakah Anda ingin menyimpan file?"; } else {tips = "file" + util.shell.filedir + "Teks" telah berubah. /n "+" Apakah Anda ingin menyimpan file? "} int n = jOptionPane.showConfirmDialog (null, tips," notepad ", joptionpane.yes_no_cancel_option); if (n == 0) {// ya pengembalian 0 tidak ada pengembalian 1 batal 2 savemethod); if (n == 0) {// Ya Tidak ada pengembalian 1 Batal 2 Savemethod); // simpan file dan buka file} lain jika (n == 1) {// return no System.exit (0); belum disimpan. /n "+" Apakah Anda ingin menyimpan file? "; int n = jOptionPane.showConfirmDialog (null, tips," notepad ", joptionpane.yes_no_cancel_option); if (n == 0) {// ya return 0 Tidak ada pengembalian 1 Batal 2 Savemethod); if (n == 0) {// ya pengembalian 0 Tidak ada pengembalian 1 batal 2 Savemethod); ya, buka file} lain jika (n == 1) {// return no system.exit (0);Saya mendefinisikan setiap operasi di acara mendengarkan berikutnya sebagai fungsi. Metode penambahan acara mendengarkan sama dengan langkah pertama. Metode implementasi spesifik adalah sebagai berikut:
2. Tambahkan menu "simpan sebagai" untuk mendengarkan acara
Deskripsi Fungsi: Memicu menu ini dan jendela Simpan As akan muncul, dan menyimpan file seperti di tempat lain. Untuk memfasilitasi penggunaan kembali kode, simpan sebagai merangkumnya ke dalam metode dan memanggil kode sebagai berikut:
public void saveas () { / *** merangkumnya sebagai metode ini untuk memfasilitasi dialog panggilan* / filedialog = new filedialog (util.shell.shell, swt.save); dialog.setFilterPath (System.getProperty ("C: // Dokumen dan Pengaturan")); // Atur jalur default ke dialog terbuka.setFilTextensions (string baru [] {"*.txt", "*.*"}); // Atur ekstensi dialog file yang dibuka.setFilternames (string baru [] {"file teks (*.txt)", "Semua file (*.*)"}); // Atur nama ekstensi yang ditampilkan di kotak drop-down string file = dialog.open (); // buka jendela dan kembalikan ke direktori file yang dipilih oleh pengguna if (file! = Null) {util.shell.filedir = file; // simpan direktori file, gunakan nanti} if (file! = Null) {uTil.shell.shell. file.trim ())). getName ()); // Dapatkan nama file (tidak termasuk jalur) untuk mengatur judul FileWriter FileWriter; coba {fileWriter = FileWriter baru (file); BufferedWriter out = BufferedWriter baru (FileWriter); out.write (util.shell.getText (). getText ()); out.close (); filewriter.close (); } catch (ioException e1) {e1.printstacktrace (); }}}3. Tambahkan acara mendengarkan menu "simpan"
Deskripsi Fungsi: Ketika menu "Simpan" dipicu, jendela Simpan File muncul, lalu pilih direktori dan masukkan nama file untuk disimpan. Mengenai logika tabungan, saya harus berbicara tentang penghematan di sini: pada awalnya, saya berpikir tentang bagaimana menentukan apakah dokumen saat ini disimpan atau disimpan sebagai. Kemudian, saya dengan hati -hati mengamati notepad desktop dan menemukan bahwa kotak dialog muncul oleh Save and Save sebagaimana sama. Anda hanya perlu membuat sedikit perbedaan untuk menentukan apakah akan menabung atau menyimpan sebagai penilaian adalah sebagai berikut: jika disimpan, itu berarti bahwa FileDir ada, dan Anda dapat secara langsung memanggil fungsi yang disimpan. Jika FileDir tidak ada, itu berarti bahwa file tersebut baru dibuka dan jalur belum ditentukan, jadi lompat untuk menyimpan sebagai formulir.
Pertama, tentukan string variabel global FileDir = null; Tetapkan untuk kosong, dan semua file tidak disimpan secara default. Kemudian, apakah itu untuk membuka file atau menyimpannya sebagai file, direktori tempat file berada (termasuk nama file dan nama akhiran) dicatat dalam FileDir, dan akhirnya menentukan apakah FileDir kosong di acara Simpan.
Kodenya adalah sebagai berikut:
public void save () { / *** Simpan File* / if (util.shell.fileDir! = null) {// berarti file tersebut memiliki direktori dan menyimpannya secara langsung saat menyimpan, dan tidak perlu pop-up util.trim (). // Dapatkan nama file (tidak termasuk path) untuk mengatur fileWriter FileWriter judul; coba {fileWriter = FileWriter baru (util.shell.fileDir); BufferedWriter out = BufferedWriter baru (FileWriter); out.write (util.shell.getText (). getText ()); out.close (); filewriter.close (); } catch (ioException e1) {e1.printstacktrace (); }} else {// Sebaliknya, tidak pernah disimpan, lalu simpan sebagai window saveas (); }}4. Tambahkan acara mendengarkan menu "buka"
Deskripsi Fungsi: Ketika menu "buka" dipicu, jendela file terbuka muncul, lalu pilih file yang akan dibuka. Untuk menggunakan kembali kode, metode pembukaan dienkapsulasi ke dalam kode fungsi sebagai berikut:
public void openFile () {if (util.shell.filedir! = null || util.shell.gettext (). getText ()! = "") {string Tips = "file" + util.shell.filedir + "Teks" telah berubah. /n "+" Apakah Anda ingin menyimpan file? "; int n = jOptionPane.showConfirmDialog (null, tips," notepad ", joptionpane.yes_no_cancel_option); if (n == 0) {// ya return 0 Tidak ada pengembalian 1 Batal 2 Savemethod); if (n == 0) { /ya pengembalian 0 Tidak ada pengembalian 1 batal 2 Savemethod); ya, simpan file dan buka file} lain jika (n == 1) {// return no} lain jika (n == 2) {// return cancel return Untuk membuka dialog.setFilTextensions (string baru [] {"*.txt", "*.*"}); // Atur ekstensi dialog file yang dibuka.setFilternames (string baru [] {"file teks (*.txt)", "semua file (*.*)" Kembalikan Direktori File yang Dipilih oleh Pengguna (termasuk nama file) if (file == null) {return; BufferedReader di = BufferedReader baru (filereader); E1.PrintStackTrace ();5. Tambahkan acara mendengarkan menu "baru"
Deskripsi Fungsi: Saat acara dipicu, buat jendela baru. Jika file saat ini tidak disimpan, ia diminta untuk menyimpannya, jika tidak, halaman baru akan dilompat untuk menghasilkan.
Prinsip menghasilkan halaman baru: inisialisasi ulang judul, inisialisasi file, dan inisialisasi domain pengeditan. Di sini Anda mengekstrak kode untuk membuka file baru ke dalam metode, yang nyaman untuk memanggil kode sebagai berikut:
void openNewFile () {if (util.shell.fileDir! = null || util.shell.getText (). getText ()! = "") {string Tips = "file" + util.shell.filedir + "Teks" telah berubah. /n "+" Apakah Anda ingin menyimpan file? "; int n = jOptionPane.showConfirmDialog (null, tips," notepad ", joptionpane.yes_no_cancel_option); if (n == 0) {// ya pengembalian 0 Tidak ada pengembalian 1 Batal 2 Savemethod Savemethod (n == 0) {// Ya pengembalian 0 Tidak ada pengembalian 1 Batal 2 Savemethod Savemethod) File} if (n == 1) {// return no} lain jika (n == 2) {// return canceng kembali; Util.shell.filedir = NULL;4. Tambahkan Fungsi Mendengarkan Acara (2) Kelas Editorial
Tambahkan fungsi mendengarkan acara untuk setiap menu
1. Tambahkan menu "tunjukkan waktu" untuk mendengarkan acara
Deskripsi Fungsi: Ketika acara dipicu, waktu sistem akan ditampilkan di kursor di kotak Edit: Dapatkan waktu sistem saat ini, ubah menjadi jenis string, dan kemudian panggil metode Text.Append (STR) untuk menampilkan waktu setelah kursor kotak edit.
1.1 Tambahkan fungsi mendengarkan acara untuk mendapatkan metode waktu saat ini dari sistem: Call SimpleDateFormat Objek untuk memformat waktu, dan kemudian panggilan Tanggal untuk mendapatkan waktu.
Masalah di awal: hanya dapat ditambahkan ke akhir konten setiap saat. Jika Anda memikirkannya dengan hati -hati, Anda harus menemukan posisi kursor saat ini, dan kemudian menyambungkan string sebelum kursor + string setelah kursor, dan kemudian tampilkan bersama.
Saya mencari waktu yang lama dan menemukan bahwa getCaretPosition () baru saja kembali sebagai plastik, yang seharusnya menjadi yang mendapatkan posisi kursor saat ini. Saya mencobanya seperti yang diharapkan. Berikutnya adalah mengimplementasikan teknologi splicing string: s1.substring (0, index) + s2 + s1.substring (index, s1.length ());
String baru yang dikembalikan.
Masalah yang muncul: Setelah splicing, output langsung, menghasilkan konten sebelumnya disambung dengan string baru yang lebih lambat lagi. Setelah perubahan waktu yang lama, saya menemukan bahwa saya perlu memanggil metode Settext (String). Sebelum output, hapus konten yang ditampilkan di kotak pengeditan sebelumnya terlebih dahulu. Konten fungsi mendengarkan terakhir adalah sebagai berikut:
showdate.addselectionListener (selection new newAdapter () { /*** Tambahkan peristiwa mendengarkan dari "waktu dan tanggal" menu* Fungsi Deskripsi: Memicu menu ini untuk menambahkan waktu sistem saat ini ke akhir kursor dari Kotak Edit* /GetCaret yang dipilih (selectionEvent e) {int index = getText (). box // System.out.println (indeks); getText (). Settext ("");Fungsi string splicing adalah sebagai berikut:
public String insertString(String s1,String s2,int index){ /** * Implement the insert function of string* The three parameters passed in are: the original string, the string to be inserted, and the insertion position* The returned is the inserted string*/ return s1.substring(0, index) + s2 + s1.substring(index, s1.length()); }2. Tambahkan menu "Pilih Semua" untuk mendengarkan acara
Fungsi Deskripsi: Memicu menu ini untuk memilih semua string bidang teks
Kotak pengeditan di Java sebenarnya dilengkapi dengan pilihan semua fungsi. Haha, Anda dapat menghubungi text.selectall () secara langsung. Diperkirakan ada juga penyalinan dan tempel siap pakai. Saya hampir lupa. Setelah memilih semua, Anda perlu menentukan apakah konten yang dipilih kosong. Jika tidak kosong, Anda perlu mengatur tombol "hapus" dan "potong" ke pemilihan opsional semua kode sebagai berikut:
SELECTALL.ADDSElectionListener (New selectionAdapter () { /*** Tambahkan peristiwa mendengarkan dari "pilih semua" menu* Deskripsi Fungsi: Picu menu untuk memilih semua teks di bidang teks, dan atur tombol "hapus" dan "potong". if (getText (). getText ()! = null) {// Jika kontennya tidak kosong, itu berarti ada konten yang dipilih, jadi Anda perlu mengatur tombol "hapus" "cut" dan "salin" ke copy.setenabled (true);3. Tambahkan Acara Pemantauan Menu "Potong"
Deskripsi Fungsi: Memicu menu ini, sadari kode metode cut () dari kotak edit yang secara langsung memanggil metode cut () dari kotak edit sebagai berikut:
cut.addselectionListener (selection new newAdapter () { / *** Tambahkan acara mendengarkan dari menu "cut"* Fungsi Deskripsi: Memicu menu ini untuk memotong string yang dipilih* / public void widgetSelected (selectionEvent e) {getText (). cut ();}});4. Tambahkan Acara Pemantauan Menu "Tempel"
Deskripsi Fungsi: Memicu menu ini, dan mengimplementasikan kode metode pasta () yang secara langsung memanggil kotak edit dengan menempelkan konten clipboard adalah sebagai berikut:
paste.addselectionListener (selection new newAdapter () { / *** Tambahkan peristiwa mendengarkan dari menu "paste"* Fungsi Deskripsi: Memicu menu ini untuk menempelkan konten di clipboard ke dalam kotak edit* / public void widgetselected (selectionEvent e) {getText (). paste ();}});5. Tambahkan menu "Salin" untuk mendengarkan acara
Deskripsi Fungsi: Memicu menu ini, terapkan kode metode salin () yang secara langsung memanggil kotak edit dengan menyalin konten yang dipilih sebagai berikut:
copy.addselectionListener (selection new newAdapter () { / *** Tambahkan peristiwa mendengarkan dari menu "cut"* Fungsi Deskripsi: Trigger menu ini untuk memotong string yang dipilih* / public void widgetSelected (selectionEvent e) {text.copy ();}6. Tambahkan Acara Pemantauan Menu "Undo"
Deskripsi Fungsi: Memicu menu ini, lepaskan operasi saat ini, lepaskan algoritma yang terlibat dalam fungsi ini rumit. Untuk saat ini, notepad ini tidak mendukung metode undo tombol, tetapi mendukung klik kanan undo (komponen teks java hadir dengannya ketika klik kanan undo tidak ditulis oleh saya, haha)
7. Tambahkan menu "Temukan" untuk mendengarkan acara
Fungsi Deskripsi: Memicu menu ini dan melakukan operasi pencarian
find.addSelectionListener(new SelectionAdapter() { /** * A dialog box for adding a search function, where you need to click Find, and then a dialog box pops up, enter the relevant content of the search */ public void widgetSelected(SelectionEvent e) { FindWindow fw = new FindWindow(shell,SWT.DIALOG_TRIM); fw.open(); } });4. Tambahkan Fungsi Mendengarkan Acara (3) Kelas Auxiliary
Selain beberapa acara menu di bilah menu, Anda juga perlu mendengarkan acara keyboard. Yaitu, jika keyboard mengetik bidang teks, tampilan menu yang relevan akan dipicu: Batalkan, cari, temukan, dan temukan tempat berikutnya, ganti keempat menu ini dan atur ke opsional
1. Mendengarkan bidang teks
getText (). AddKeyListener (KeyAdapter baru () {/*** Setel keyboard Listening Events* Jika Anda memiliki pengetikan keyboard, Anda perlu mengatur tombol yang relevan agar terlihat: Undo, Search, dan temukan tempat berikutnya*/public void keyreleased (keyevent e) {if (getText (). GetText (). find.setenable (true);2. Menerapkan fungsi mendengarkan acara dari menu "Font"
Kodenya adalah sebagai berikut:
setFont.AddselectionListener (selection new newAdapter () { / *** Atur acara mendengarkan font* / public void widgetSelected (selectionEvent e) {fontdialog fontdialog = getFont (shell, swt.none); font oldfont = getText (). getFont (); fontdialog.setfontlist (oldfont.getFontData ());} fontdata fontdata = fontdialog.open (); if (oldfont! = null) {oldfont.dispose ();lima. Pengaturan tag formulir
Ekstrak fungsi utama ke kelas uji, parameterisasi judul bentuk notepad, dan masukkan label awal ke fungsi utama: "unt berjudul Notepad"
Konstruktor parameter didefinisikan dalam kelas bentuk Main_window, dan parameter yang diteruskan adalah konstruktor nama judul sebagai berikut:
Main_window (string titlename) { / *** Parameter yang dilewati dengan konstruk parameter adalah nama file* / this.titlename = titlename; } Perhatikan bahwa: judul perangkat lunak adalah: Notepad tanpa judul saat membuka file, judulnya adalah nama file yang dibuka. Saat menyimpan nama file yang disimpan, judulnya adalah nama file yang disimpan. Saat menyimpan nama file adalah nama file yang disimpan. Metode mendapatkan nama file (tidak termasuk jalur) adalah:
shlnotepad.settext ((file baru (filedir.trim ())). getName ()); // Dapatkan nama file (tidak termasuk jalur) untuk mengatur judul
Untuk kesederhanaan, saya telah menyingkatnya sebagai kode kalimat
Atur ikon program, masukkan ke dalam direktori proyek, dan Anda dapat langsung memperkenalkannya untuk digunakan
Berpikir: Saat mendorong pengguna apakah akan menyimpan, Anda tidak bisa hanya melihat apakah jalurnya kosong. Anda harus memeriksa apakah keyboard telah ditekan, yaitu, apakah ada perubahan, dan apakah konten telah berubah (mungkin klik kanan untuk menghapusnya secara langsung dan belum melewati keyboard)
6. Definisi tiga kotak dialog dialog lainnya
1. Temukan kotak dialog
Juga klik kanan paket yang baru dibuat baru-> lainnya-> windowbuilder-> swt designer-> swt-> dialog bernama findwindow
Hasilnya adalah sebagai berikut:
Jendela ini dibagikan di sini, pencarian, penggantian, dan mencari tempat berikutnya. Kotak pengeditan konten pencarian dapat memicu tombol untuk mengklik. Kotak pengeditan konten pencarian dan kotak pengganti tidak kosong. Fungsi penggantian dapat dipicu. Berikut adalah daftar pencarian tempat berikutnya dan badan metode penggantian untuk mencari tempat berikutnya:
Ide: Pertama dapatkan semua string di jendela utama, kemudian dapatkan konten yang perlu dicari, langsung panggil fungsi string pencarian yang disediakan oleh Java untuk mendapatkan indeks awal, dan kemudian menambahkan konten pencarian ke panjang panjang string yang merupakan string yang perlu diberikan, kemudian panggil fungsi rendering di jendela utama untuk membuat string dan kemudian menampilkannya.
Kode spesifiknya adalah sebagai berikut:
find_next.addselectionListener (selection new newAdapter () {@Override public void widgetSelected (selectionEvent e) {parestr = util.shell.gettext_1 (); // Dapatkan Kotak Teks Teks Utama Indeks = Parestr.indexof (TextContent.gettext (), index); /Get The Posure (TextContent.Gettext (); JOPTIONPANE.ShowMessagedialog (null, "tidak ditemukan/" "+textcontent.getText ()+"/"", "notepad", endicon index+TextContent.getText (). Length ();Tombol pengganti memicu acara sebagai berikut;
gantibtn.addselectionListener (selection new newAdapter () { /*** Ganti acara Tombol* /public void widgetSelected (selectionEvent e) {parestr = util.shell.gettext_1 (); // Dapatkan konten kotak teks utama Parestr = Parestr.ReplacExext (textcontent.gettext () () ;getext (TextContent.Gettext (); Util.shell.showtext (parestr);}});2. Pembentukan Kotak Dialog AboutAuthor
Pembuatan kotak dialog ini sama dengan kotak dialog pencarian. Sebutkan tentang aTauthor. Rendering spesifik adalah sebagai berikut:
Kotak dialog ini tidak melibatkan algoritma terkait. Tambahkan tiga tag Jlabel dan masukkan tiga kalimat.
3. Pembentukan kotak dialog Go_to
Saya tidak akan banyak bicara tentang metode membuat kotak dialog. Rendering spesifik adalah sebagai berikut:
Implementasi kode adalah sebagai berikut:
queding.addselectionListener (selection new newAdapter () { / *** konfirmasi untuk melompat ke baris tertentu* / public void widgetSelected (selectionEvent e) {int n = integer.parseint (goto_line.getText ()); goto_line.setText ("" + n + "); util.shell (); goto_line.setText (" " + n +"); util.shell.Hubungi metode gooneline () di jendela utama
public void gOooneline (int row) {getText (). setSelection (baris); }Pada titik ini, fungsi umum dari seluruh notepad telah selesai
7. Ringkasan
Dari awal penulisan hingga penyelesaian akhir, butuh sekitar 2-3 hari. Saya belajar banyak algoritma terkait. Pemrograman Java sangat nyaman. Banyak metode tidak perlu diimplementasikan oleh diri saya sendiri. Anda bisa menelepon mereka secara langsung. Namun, Java juga memiliki banyak kekurangan. Misalnya, saya menggunakan kotak dialog milik Java untuk menutup jendela. Hasilnya sangat macet. 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.
Misalnya:
母串为“ab记事本def3g” 需要从”3”这个字符串开始向前查找”记事本”字符串,可将母串中”3”字符串所在位置之前的字符串”ab记事本def”完全倒置为”g3fed本事记ba” 将查找内容也倒置成”本事记” 再调用Java内带的字符串查找函数查找所在位置,再还原即可。
以上就是手把手编写记事本的详细步骤,Java基于SWT插件编写桌面记事本应用程序,希望对大家的学习有所帮助。