In diesem Artikel wird der detaillierte Prozess des Java -Schreib -Notizblocks basierend auf SWT vorgestellt. Es wird Ihnen als Referenz mit Ihnen geteilt. Der spezifische Inhalt ist wie folgt
Es kann die grundlegenden Funktionen des Desktop-Notizblocks im Windows-System, im Narrenstil und im Schritt-für-Schritt-Betrieb erkennen. Xiaobai kann auch eine vollständige Bewerbung selbst schreiben.
Erforderliche Werkzeuge: Eclipse (mit SWT-Plug-In)
Das fertige Produkt lautet wie folgt:
Einführung der Anwendungsfunktion:
Funktionsanalyse:
Das Dateimenü enthält
1.1. Erstellen (n) Strg+n
1,2open (o) Strg+o
1.3Save (s) Strg+s
1.4Save als (a)
1.5 Ausgang (x)
Das Menü bearbeiten enthält:
2.1 rückgängig (u) Strg+z
2,2 Scher (t) Strg+t
2.3 Kopie (c) Strg+C.
2.4 Paste (p) Strg+V
2.5 löschen (l) del
2.6 Finden Sie (d) Strg+f
2.7 Finden Sie den nächsten Ort (n) F3
2.8 Ersetzen Sie (r) Strg+h
2.9 Gehen Sie zu (g) Strg+g
2.10 Wählen Sie alle (a) Strg+a
2.11 Uhrzeit/Datum (d) F5
Das Formatmenü enthält
3.1 Automatische Linienverpackung (W)
3.2 Schriftart (f)
Das Menü anzeigen enthält
4.1 Statusleisten (en)
Das Hilfmenü enthält
5.1 Hilfe anzeigen (h)
5.2 Über Notepad (a)
Als nächstes werde ich Ihnen Schritt für Schritt beibringen, einen Notizblock mit mehreren spezifischen Kategorien wie folgt zu schreiben:
1.Notepad.java
Diese Klasse ist die Hauptschnittstellenklasse, die die Hörereignisse der einzelnen Taste enthält
2. Java -Klasse Diese Klasse ist eine Hilfsklasse, die die in der Hauptfensterklasse definierten Mitglieder in anderen Klassen erleichtert.
3. Überauthor.java
Über die Klasse des Autors, ein Dialogfenster zum Anzeigen von Autoreninformationen
4.Findwindow.java
Ein Dialogfenster für die Suchfunktion
5.go_to.java
Gehen Sie zu einem Dialogfenster der Funktion
6.openmethod.java
Es gibt zwei Möglichkeiten, eine eingekapselte Datei zu öffnen
7.Savamethod.java
Zwei Möglichkeiten zum Speichern von Dateien
8.SWTRSOURCEMANATER.JAVA
Diese Klasse ist eine extern importierte Klasse und wird zum Laden von Bildern verwendet
9.Test.java
Programmeintrag, praktische Paket -Jar -Dateien später
10.QuitMethod.java
Zwei Möglichkeiten, das Fenster zu schließen
Schreibschritte:
eins. Erstellen Sie ein neues SWT -Projekt und erstellen Sie das erste Fenster
Öffnen Sie Eclipse, New-> Other-> WindowBuilder-> SWT Designer-> SWT/Jface Java Project. Nennen Sie den Projektnamen Notizblock
Öffnen Sie das neu erstellte Notepad-Projekt und klicken
Tipps: Die Namensregeln von Paketen werden am besten verwendet, um COM zu verwenden. Custom.org. Fragen Sie nicht warum, Sie werden es verstehen, nachdem Sie in Zukunft gearbeitet haben.
Klicken Sie mit der rechten Maustaste auf das neu erstellte Paket New-> Other-> WindowBuilder-> SWT Designer-> SWT-> Anwendungsfenstername Notepad
Zu diesem Zeitpunkt haben wir das erste SWT -Fenster erstellt und auf das Design auf der rechten Seite der Quelle geklickt, um die grafische Schnittstelle der neu erstellten Nummer anzuzeigen, um die visuelle Programmierung zu realisieren.
Benennen Sie die TXT -Eigenschaft in den Eigenschaften in der Notizbeinform um: Notizblock
Ziehen Sie die Kompositenkomponente in Verbundwerkstoffen in die Notizbauton und ändern Sie ihre Layout -Eigenschaft in Fillayout, dh ein Fülllayout, damit die gesamte Schnittstelle später in eine Bearbeitungsdomäne verwandelt werden kann. Ziehen Sie dann die Textkomponente in die Kompositenkomponente. Überprüfen Sie das Attribut H_SCROLL und V_SCROLL im Eigenschaftsstil der Textkomponente zu true
Beschreibung: H_Scroll ist eine horizontale Bildlaufleiste, V_Scroll ist eine vertikale Bildlaufleiste
zwei. Stellen Sie die zugehörigen Beschriftungen der Menüleiste und das Gesamtlayout des Formulars ein
Wählen Sie die Menüleistenkomponente, um es in das Hauptformular zu ziehen
1. Setzen Sie den ersten Menüelement (Datei)
Wählen Sie die Cascde -Menükomponente, ziehen Sie sie in die Menüleistenkomponente und ändern Sie das Attribut: Ändern Sie das Variablenattribut in File_Menu und ändern Sie den Text in Datei (f).
1.1 Einstellungen Untermenü: Erstellen (n) Strg+n
Wählen Sie Menüelement, um der Cascde -Menükomponente hinzuzufügen, das Attribut ändern: Ändern Sie das Variablenattribut in New_file und ändern Sie den Text in: new (n) Strg+n;
1.2 Einstellungen Untermenü: Öffnen (o) Strg+o
Wählen Sie das Menüelement, um der Cascde -Menükomponente hinzuzufügen, das Attribut ändern: Ändern Sie das variable Attribut in open_file und ändern Sie den Text an: Öffnen Sie (o) Strg+O.
1.3 Einstellungen Untermenü: Speichern (o) Strg+s
Wählen Sie Menüelement, um der Cascde -Menükomponente hinzuzufügen, das Attribut ändern: Ändern Sie das Variable -Attribut auf speichern_file und ändern Sie den Text an: Speichern (o) Strg+s
1.4 Einstellungen Untermenü: Speichern Sie (a)
Wählen Sie Menüelement, um der Cascde -Menükomponente hinzuzufügen, das Attribut ändern: Ändern Sie das Variablenattribut auf Speichern und ändern Sie den Text an: Speichern Sie als (a).
1.5 Einstellungen Untermenü: Beenden (x)
Wählen Sie Menüelement aus, um der Menükomponente der CASCDE hinzuzufügen, das Attribut ändern: Ändern Sie das variable Attribut, um zu beenden, und ändern Sie den Text an: Beenden (x).
2. Stellen Sie den zweiten Menüelement fest (bearbeiten)
Wählen Sie die Cascde -Menükomponente, ziehen Sie sie in die Menüleistenkomponente und ändern Sie das Attribut: Ändern Sie das Variablenattribut in edit_menu und ändern Sie den Text in Bearbeiten (e).
2.1 Einstellungen Untermenü: Rückgängigmachen (u) Strg+z
Wählen Sie Menüelement, um der Cascde -Menükomponente hinzuzufügen, das Attribut zu ändern: Ändern Sie das Variablenattribut auf rückgängig und ändern Sie den Text an: Rückgängigungszusammenhang (u) Strg+Z und ändern Sie es zu False.
2.2 Einstellungen Untermenü: Cut (t) Strg+t
Wählen Sie Menüelement, um der Cascde -Menükomponente hinzuzufügen, das Attribut zu ändern: Ändern Sie das Variablenattribut, um zu schneiden, und ändern Sie den Text an: Schneiden Sie (t) Strg+t und ändern Sie die Aktivierung von False.
2.3 Einstellungen Untermenü: Kopie (c) Strg+C
Wählen Sie Menüelement, um der Cascde -Menükomponente hinzuzufügen, das Attribut zu ändern: Ändern Sie das Variablenattribut, um zu kopieren, und ändern Sie den Text in: kopieren (c) Strg+c und ändern Sie die Aktivierung von False.
2.4 Einstellungen Untermenü: Einfügen (P) Strg+V
Wählen Sie Menüelement, um der Menükomponente der CASCDE hinzuzufügen, das Attribut ändern: Ändern Sie das variable Attribut zum Einfügen und ändern Sie den Text in: Einfügen (p) Strg+V
2.5 Einstellungen Untermenü: löschen (l) del
Wählen Sie Menüelement aus, um der Menükomponente der CASCDE hinzuzufügen, das Attribut ändern: Ändern Sie das Variablenattribut zum Löschen und ändern Sie den Text in: Löschen (l) del und ändern Sie die Aktivierung in False.
2.6 Einstellungen Untermenü: Finden Sie (d) Strg+f
Wählen Sie Menüelement, um der Cascde -Menükomponente hinzuzufügen, das Attribut ändern: Ändern Sie das variable Attribut, um den Text zu ermitteln, und ändern Sie den Text an: Suchen Sie (d) Strg+f und ändern Sie es zu False.
2.7 Einstellungen Untermenü: Finden Sie den nächsten Ort (n) F3
Wählen Sie Menüelement, um der Cascde -Menükomponente hinzuzufügen, das Attribut zu ändern: Ändern Sie das Variablenattribut, um zu find_next und ändern Sie den Text an: Suchen Sie den nächsten Platz (n) F3, und ändern Sie es zu False.
2.8 Einstellungen Untermenü: Ersetzen Sie (r) Strg+H
Wählen Sie Menüelement, um der Cascde -Menükomponente hinzuzufügen, das Attribut zu ändern: Ändern Sie das zu ersetzende Variablenattribut und ändern Sie den Text an: Ersetzen Sie (r) Strg+H und ändern Sie die Aktivierung von False.
2.9 Einstellungen Untermenü: Gehen Sie zu (g) Strg+g
Wählen Sie Menüelement, um der Cascde -Menükomponente hinzuzufügen, das Attribut ändern: Ändern Sie das Variablenattribut in Go_to und ändern Sie den Text an: Gehen Sie zu (g) Strg+G.
2.10 Einstellungen Untermenü: Wählen Sie alle (a) Strg+a aus
Wählen Sie Menüelement aus, um der Menükomponente der CASCDE hinzuzufügen, das Attribut ändern: Ändern Sie das Variable -Attribut, um es zu auswählen, und ändern Sie den Text an: Wählen Sie alle (a) Strg+a aus
2.11 Einstellungen Untermenü: Uhrzeit/Datum (d) F5
Wählen Sie Menüelement aus, um der Cascde -Menükomponente hinzuzufügen, das Attribut ändern: Ändern Sie das Variablenattribut in SendDate und ändern Sie den Text an: Uhrzeit/Datum (d) F5
3. Setzen Sie den dritten Menüelement (Format)
Wählen Sie die Cascde -Menükomponente, ziehen Sie sie in die Menüleistenkomponente und ändern Sie das Attribut: Ändern Sie das Variable -Attribut in format_menu und ändern Sie den Text in Format (o).
3.1 Einstellungen Untermenü: Automatische Linienverpackung (W)
Wählen Sie Menüelement, um der Cascde -Menükomponente hinzuzufügen, das Attribut zu ändern: Ändern Sie das variable Attribut in auto_enter und ändern Sie den Text an: Automatic Line Wrap (W)
3.2 Einstellungen Untermenü: Schriftart (f)
Wählen Sie Menüelement aus, um der Cascde -Menükomponente hinzuzufügen, das Attribut ändern: Ändern Sie das Variablenattribut in SetFont und ändern Sie den Text in: Schriftart (f).
4. Setzen Sie den vierten Menüelement (Ansicht)
Wählen Sie die Cascde -Menükomponente, ziehen Sie sie in die Menüleistenkomponente und ändern Sie das Attribut: Ändern Sie das Variable -Attribut an view_menu und ändern Sie den Text an die Anzeige (v).
4.1 Einstellungen Untermenü: Statusleisten (en)
Wählen Sie Menüelement, um der Cascde -Menükomponente hinzuzufügen, das Attribut zu ändern: Ändern Sie das Variablenattribut in Status und ändern Sie den Text in: Statusleiste (en).
5. Stellen Sie den fünften Menüpunkt fest (Hilfe)
Wählen Sie die Cascde -Menükomponente, ziehen Sie sie in die Menüleistenkomponente und ändern Sie das Attribut: Ändern Sie das Variablenattribut auf help_menu und ändern Sie den Text, um Hilfe (h) zu erhalten.
5.1 Einstellungen Untermenü: Help anzeigen (H)
Wählen Sie Menüelement, um es der Menükomponente der CASCDE hinzuzufügen, das Attribut zu ändern: Ändern Sie das Variablenattribut, um sie zu suchen, und ändern Sie den Text an: Ansicht helfen (h).
5.2 Einstellungen Untermenü: Über Notepad (a)
Wählen Sie Menüelement, um es der Menükomponente von Cascde hinzuzufügen, das Attribut ändern: Ändern Sie das Variablenattribut in AboutAuthor und ändern Sie den Text an: About Notepad (a).
Zu diesem Zeitpunkt wurde das Rendern des gesamten Seitenlayouts wie folgt festgelegt:
Implementieren Sie als nächstes verschiedene Funktionen
drei. Einstellungen Menüverknüpfungsschlüssel
Einführung in die Funktion "setAccelerator () : Verwenden Sie die Funktion" setAccelerator (), um die entsprechenden Verknüpfungsschlüssel festzulegen. Die übergebenen Parameter sind Schlüsselwerte. Beispielsweise wird die T -Taste -Taste Strg+n als: Objekt festgelegt. setAccelerator (swt.ctrl+'n');
Die Verknüpfungsschlüssel -F5 -Einstellungsmethode lautet: Object.Setaccelerator (swt.f5);
Daraus können wir alle erforderlichen Abkürzungsschlüssel einstellen
new_file.setaccelerator (swt.ctrl + 'n'); // Erstellen Sie eine neue Dateiverknüpfung open_file.setaccelerator (swt.ctrl + 'o'); // eine Dateiverknüpfung speichern. // einen Verknüpfungsausschnitt rückgängig machen. // eine Verknüpfung kopieren.setaccelerator (swt.ctrl + 'c'); // Kopieren Sie einen Verknüpfungspaste. // Fügen Sie die Verknüpfungstaste ein, löschlich.setaccelerator (swt.del); // Löschen Sie den T -Shortcut -Schlüssel Find.setAccelerator (swt.ctrl + 'f'); // Die Verknüpfungsschlüssel finden Sie find_next.setAccelerator (swt.f3); // Die nächste Verknüpfungsschlüssel ersetzen.setaccelerator (swt.ctrl + 'h'); // Ersetzen Sie den T -Shortcut -Schlüssel Go_to.setaccelerator (swt.ctrl + 'g'); // Gehen Sie zum T -Shortcut -Schlüssel selectAll.setAccelerator (swt.ctrl + 'a'); // Wählen Sie alle Verknüpfungsschlüsse ShowDate.setAccelerator (swt.f5); // Zeitverknüpfungsschlüssel anzeigen
4. Fügen Sie Ereignishörfunktion hinzu (1) Dateiklasse
Fügen Sie jedem Menü der Datei eine Ereignishörfunktion hinzu
1. Fügen Sie das Menü -Hörereignis "Beenden" hinzu
Funktionsbeschreibung: Die Implementierung des Auslösen dieses Menüs zum Beenden der Anwendung ist relativ einfach. Rufen Sie das Systemfunktionssystem auf.exit (0); Sie können auf die Komponente "Zeit/Datum (F5)" im Designmodus klicken und dann auf "Ereignis anzeigen"-> Auswahl-> Doppelklick-WidgetSelected klicken
Der Ereigniscode lautet wie folgt:
Quit.AddsSelectionListener (neuer SelectionAdapter () { / *** Fügen Sie das Hörereignis des Menüs "Beenden"* Funktion Beschreibung hinzu: Auslösen dieses Menüs beendet die Anwendung* / public void widgetSelected (selectionEvent e) {System.exit (0);}});Aber ist die Tatsache so einfach? Tatsächlich ist es nicht der Fall, dass Sie einfach klicken können, um zu beenden und dann direkt zu beenden. Es gibt immer noch Hinweise, wenn Sie in einem echten Notizblock beenden, sodass der verbesserte Code wie folgt ist.
public void diyquit () { / *** Beim Verlassen der Funktion bestimmen Sie, ob es notwendig ist, sie zu speichern* / String -Tipps; System.out.println (util.shell.getText (). GetText ()); if (util.shell.filedir! = null || util.shell.getText (). getText ()! Sie müssen sich fragen, ob Sie es speichern müssen, wenn (util.shell.filedir == null) {tips = "Der teckled -Text der Datei hat sich geändert. /N"+"Möchten Sie die Datei speichern?"; } else {tips = "file" + util.shell.filedir + "Der Text von" hat sich geändert. /n "+" Möchten Sie die Datei speichern? "} int n = joptionpane.showConfirmaNDialog (null, tipps," notepad ", joptionpane.yes_no_cancel_option); if (n == 0) {// yes return 1 no cornemeth. Speichern Sie die Datei und öffnen Sie die Datei}, wenn (n == 1) {// no system.exit (0) zurückgeben; TIPS = "Der teckige Text der Datei hat sich geändert. /n"+"Do you want to save the file?"; int n=JOptionPane.showConfirmDialog(null, tips,"Notepad",JOptionPane.YES_NO_CANCEL_OPTION); if(n==0){ //Yes return 0 No Return 1 Cancel Return 2 SaveMethod savemethod = new SaveMethod(); savemethod.Save(); //Point yes, save die Datei und die Datei} else (n == 1) {// NO SYSTEM.EXIT (0) zurückgeben;Ich definiere jede Operation im nächsten Hörereignis als Funktion. Die Methode zur Addition der Hörereignisse entspricht dem ersten Schritt. Die spezifische Implementierungsmethode lautet wie folgt:
2. Fügen Sie das Menü "Speichern" hinzu, um Ereignisse anzuhören
Funktionsbeschreibung: Lösen Sie dieses Menü und das Speichern als Fenster wird angezeigt und speichert die Datei wie anderswo. Um die Wiederverwendung des Codes zu erleichtern, speichern Sie ihn in eine Methode und rufen Sie den Code wie folgt auf:
public void Saveas () { / *** Kapituliere es als diese Methode, um den Anruf zu erleichtern Dialog.SetFilterPath (System.getProperty ("c: // dokumente und Einstellungen"); // Setzen Sie den Standardpfad so, dass Dialog.setFilterextesions (neuer String [] {"*.txt", "*.*"}) geöffnet wird. // Setzen Sie die Erweiterung des geöffneten Datei dialog.setFilternamen (neuer String [] {"Textdateien (*.txt)", "Alle Dateien (*.*)"}); // Legen Sie den Namen der Erweiterung fest, die in der Dropdown-Box-String-Datei = dialog.open (); // das Fenster öffnen und zu dem vom Benutzer ausgewählten Dateiverzeichnis zurückkehren. file.trim ())). getName ()); // den Dateinamen (ausgenommen Pfad) zum Festlegen des Title FileWriter FileWriter; try {fileWriter = new FileWriter (Datei); BufferedWriter out = new bufferedWriter (FileWriter); out.write (util.shell.getText (). getText ()); out.close (); FileWriter.close (); } catch (ioException e1) {e1.printstacktrace (); }}}3. Fügen Sie das "Speichern" -Menühörerereignis hinzu
Funktionsbeschreibung: Wenn das Menü "Speichern" ausgelöst wird, wird das Fenster Speichern von Datei gespeichert und dann das Verzeichnis ausgewählt und den Dateinamen zum Speichern eingeben. In Bezug auf die Logik des Speicherns muss ich hier über das Speichern sprechen: Am Anfang habe ich darüber nachgedacht, wie ich feststellen kann, ob das aktuelle Dokument gespeichert oder gespeichert wird. Später beobachtete ich sorgfältig den Desktop -Notizblock und stellte fest, dass das Dialogfeld durch Speichern und Speichern genauso aufgetaucht ist. Sie müssen nur einen geringfügigen Unterschied machen, um festzustellen, ob das Urteil wie folgt ist: Wenn es gespeichert ist, bedeutet dies, dass Farredir existiert, und Sie können die gespeicherte Funktion direkt aufrufen. Wenn es nicht vorhanden ist, bedeutet dies, dass die Datei neu geöffnet ist und der Pfad noch nicht bestimmt wurde. Springen Sie also, um als Form zu retten.
Definieren Sie zunächst einen globalen variablen String farredir = null; Weisen Sie es leer zu, und alle Dateien werden standardmäßig nicht gespeichert. Unabhängig davon, ob die Datei geöffnet oder als Datei speichern wird, wird das Verzeichnis, in dem sich die Datei befindet (einschließlich Dateinamen und Suffix -Name), in Farredir aufgezeichnet und schließlich feststellen, ob Farredir im Speichernereignis leer ist.
Der Code ist wie folgt:
public void Save () { / *** Datei speichern* / if (util.shell.filedir! // den Dateinamen (ausgenommen Pfad) abrufen, um den Title FileWriter FileWriter festzulegen. 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 {// ansonsten wird es nie gespeichert und dann als Fenster speichern Saveas (); }}4. Fügen Sie das "Öffnen" -Menü -Hörereignis hinzu
Funktionsbeschreibung: Wenn das Menü "Öffnen" ausgelöst wird, wird das Fenster "Öffnen Sie die Datei geöffnet" und wählen Sie dann die zu öffnende Datei aus. Um den Code wiederzuverwenden, wird die Öffnungsmethode wie folgt in den Funktionscode eingekapselt:
public void openFile () {if (util.shell.filedir! = null || util.shell.getText (). getText ()! /n"+"Do you want to save the file?"; int n=JOptionPane.showConfirmDialog(null, tips,"Notepad",JOptionPane.YES_NO_CANCEL_OPTION); if(n==0){ //Yes return 0 No return 1 Cancel Return 2 SaveMethod savemethod = new SaveMethod(); savemethod.Save(); //Does yes, save die Datei und öffnen Sie die Datei} else if (n == 1) {// no} else if (n == 2) {// return return; dialog.setFilterextensions (neuer String [] {"*.txt", "*.*"}); // Setzen Sie die Erweiterung des geöffneten Datei-Dialogs.setFilternamen (neuer String [] {"Textdateien (*.txt)", "alle Dateien (*)"}). Verzeichnis ausgewählt vom Benutzer (einschließlich Dateiname) if (Datei == NULL) {Return; = newedReader (fileReader); }} catch (FilenotFoundException E2) {e2.printstacktrace ();5. Fügen Sie das "neue" Menü -Hörereignis hinzu
Funktionsbeschreibung: Wenn das Ereignis ausgelöst wird, erstellen Sie ein neues Fenster. Wenn die aktuelle Datei nicht gespeichert ist, wird sie aufgefordert, sie zu speichern, andernfalls wird eine neue Seite zum Generieren gesprungen.
Das Prinzip der Generierung einer neuen Seite: Initialisieren Sie den Titel neu, initialisieren Sie Farredir und initialisieren Sie die Bearbeitungsdomäne. Hier extrahieren Sie den Code, um die neue Datei in eine Methode zu öffnen, mit der der Code wie folgt aufgerufen werden kann:
void openNewFile () {if (util.shell.filedir! = null || util.shell.getText (). getText ()! /n "+" Möchten Sie die Datei speichern? "; int n = joptionpane.showConfirMdialog (null, tipps," notepad ", joptionpane.yes_no_cancel_option); if (n == 0) {// yes return 1 no zurück. Datei} else if (n == 1) {// NEIN} IF (N == 2) {// Rückkehr zurück; = NULL;4. Fügen Sie Ereignishörfunktion hinzu (2) Redaktionsklasse
Fügen Sie für jedes Menü Event -Hörfunktion hinzu
1. Fügen Sie das Menü "Zeit anzeigen" hinzu, um Ereignisse anzuhören
Funktionsbeschreibung: Wenn das Ereignis ausgelöst wird, wird die Systemzeit am Cursor im Bearbeitungsfeld angezeigt: Rufen Sie die aktuelle Systemzeit in einen String -Typ und rufen Sie dann den Text an.
1.1 Fügen Sie eine Ereignishörfunktion hinzu, um die aktuelle Zeitmethode des Systems zu erhalten: Rufen Sie SimpledateFormat -Objekt an, um die Zeit zu formatieren, und rufen Sie dann das Datum an, um die Zeit zu erhalten.
Das Problem am Anfang: Es kann nur jedes Mal am Ende des Inhalts hinzugefügt werden. Wenn Sie sorgfältig darüber nachdenken, müssen Sie die aktuelle Cursorposition suchen und dann die Saite vor dem Cursor + die Zeichenfolge nach dem Cursor spleißen und dann zusammen anzeigen.
Ich suchte lange und stellte fest, dass GetCaretPosition () gerade als Kunststoff zurückgekehrt war, was die aktuelle Cursorposition erhält. Ich habe es wie erwartet versucht. Als nächstes wird die String -Spleißtechnologie implementiert: S1.Substring (0, Index) + S2 + S1.Substring (Index, S1.Length ());
Die zurückgegebene neue Zeichenfolge.
Auftreten von Problemen: Nach dem Spleißen wird die Ausgabe direkt erzeugt, was dazu führt, dass der vorherige Inhalt später mit den neuen Zeichenfolgen gespleißt wird. Nach langer Zeit des Wandels stellte ich fest, dass ich die SetText (String) -Methode aufrufen muss. Löschen Sie vor dem Ausgang den Inhalt zuerst im vorherigen Bearbeitungsfeld. Der endgültige Inhalt der Hörfunktion lautet wie folgt:
showDate.addSelectionListener (neuer SelectionAdapter () { /*** Fügen Sie das Hörereignis des Menüs "Zeit und Datum" hinzu. Box // system.out.println (Index); GetText (). SetText ("");Die Spleißstringfunktion lautet wie folgt:
public String InsertString (String S1, String S2, int -Index) { / *** Implementieren Sie die Einfügenfunktion von String* Die drei übergebenen Parameter sind: Die ursprüngliche Zeichenfolge, die String, die eingefügt werden soll, und die Insertionsposition* Das zurückgegebene String* / return S1.Substring (0, Index) + S2 + S1.Substring (Index, S1.Legth (). }2. Fügen Sie das Menü "All" hinzu, um Ereignisse anzuhören
Funktion Beschreibung: Lösen Sie dieses Menü aus, um alle Textfeldzeichenfolgen auszuwählen
Das Bearbeitungsfeld in Java wird tatsächlich mit der Funktion zur Auswahl aller ausgestattet. Haha, Sie können Text anrufen. Selectall () direkt. Es wird geschätzt, dass es auch vorgefertigte Kopien und Einfügen gibt. Ich habe fast vergessen. Nachdem Sie alle ausgewählt haben, müssen Sie feststellen, ob der ausgewählte Inhalt leer ist. Wenn es nicht leer ist, müssen Sie die Tasten "Löschen" und "Schneiden" einstellen, um optional wie folgt alle Codes auszuwählen:
selectAll.addSelectionListener (neuer selectionAdapter () { /*** Fügen Sie das Hörereignis des "MENU" Wählen Sie alle "Funktionen aus" Beschreibung aus: Lösen Sie das Menü aus, um alle Texte im Feld "Text zu" und "Löschen" und "Schneiden" auf optionale* /public void widgetSelected (selectionEvent e). if (getText (). GetText ()!3. Fügen Sie das Menüüberwachungsereignis "Schnitt" hinzu
Funktion Beschreibung: Lösen Sie dieses Menü aus und realisieren Sie den METHODE -CODE des Cuts () des Bearbeitungsfelds, in dem die Methode Cut () des Bearbeitungsfelds wie folgt direkt aufgerufen wird:
cut.AddSelectionListener (neuer selectionAdapter () { / *** Fügen Sie das Hörereignis des Menüs "Schnitt" hinzu* Funktion Beschreibung: Trigger Dieses Menü, um die ausgewählte Zeichenfolge zu schneiden4. Fügen Sie das Menüüberwachungsereignis "Einfügen" hinzu
Funktion Beschreibung: Lösen Sie dieses Menü aus und implementieren Sie Paste () -Methodcode, mit dem das Feld Bearbeitungsfeld direkt aufgerufen wird, indem Sie den Inhalt des Zwischenablements wie folgt einfügen:
paste.addsSelectionListener (neuer selectionAdapter () { / *** Fügen Sie das Hörereignis des Menüs "Einfügen" hinzu* Funktion Beschreibung: Trigger Dieses Menü, um den Inhalt in der Zwischenablage in das Feld bearbeiten* / public void widgetSelected (SelectionEvent e) {getText (). Paste ();5. Fügen Sie das Menü "Kopieren" hinzu, um Ereignisse anzuhören
Funktion Beschreibung: Lösen Sie dieses Menü aus und implementieren Sie den Methodencode von Copy (), der das Feld bearbeiten, indem Sie den ausgewählten Inhalt wie folgt kopieren:
Copy.AdSelectionListener (neuer SelectionAdapter () { / *** Fügen Sie das Hörereignis des Menüs "Schnitt" hinzu* Funktion Beschreibung: Trigger Dieses Menü, um die ausgewählte Zeichenfolge zu schneiden6. Fügen Sie das Menüüberwachungsereignis "rückgängig" hinzu
Funktionsbeschreibung: Lösen Sie dieses Menü aus, rückten Sie den aktuellen Vorgang aus und schließen Sie den an dieser Funktion beteiligten Algorithmus rückgängig. Vorläufig unterstützt dieser Notizblock die Schaltfläche Rückgängigmethode nicht, sondern unterstützt mit der rechten Maustaste (die Java-Textkomponente wird damit einhergeht, wenn der Rechtsklick nicht von mir geschrieben wird, haha).
7. Fügen Sie das Menü "Suchen" hinzu, um Ereignisse anzuhören
Funktion Beschreibung: Lösen Sie dieses Menü aus und führen Sie den Suchvorgang aus
find.addSelectionListener (neuer selectionAdapter () { / ** * Ein Dialogfeld zum Hinzufügen einer Suchfunktion, in der Sie klicken müssen, und dann ein Dialogfeld aufzutreten, geben Sie den relevanten Inhalt der Suche der Suche ein.4. Fügen Sie Ereignishörfunktion (3) Hilfsklasse hinzu
Zusätzlich zu mehreren Menüereignissen in der Menüleiste müssen Sie Tastaturereignisse anhören. Das heißt, wenn ein Tastatur ein Textfeld eingibt, wird die Anzeige des entsprechenden Menüs ausgelöst: Rückgängigmachen, suchen, suchen und den nächsten Ort finden, diese vier Menüs ersetzen und auf optional einstellen
1. Textfelder anhören
GetText (). AddKeyListener (neuer Schlüsseladapter () {/*** Setzen Sie Tastatur -Hörereignisse* Wenn Sie die Tipps zum Tastatur haben, müssen Sie die relevanten Schaltflächen so einstellen, dass sie sichtbar sind: rückgängig, rückgängig gemacht, suchen und den nächsten Ort finden*/public void lyRepeased (KeyEvent e) {wenn (Gettext (). find_next.setenable (true);2. Implementieren Sie die Veranstaltungshörfunktion des Menüs "Schriftart"
Der Code ist wie folgt:
setfont.addSelectionListener (neu SelectionAdapter () { / *** Setzen Sie das Hörereignis der Schrift* / public void widgetSelected (selectionEvent e) {fontDialog fontDialog = new fontDialog (Shell, swt.none); font oldfont = gettext (). fontDialog.setFontlist (oldfont.getFontData); if (oldfont!fünf. Formular -Tag -Einstellungen
Extrahieren Sie die Hauptfunktion in die Testklasse, parametrisieren Sie den Titel der Form des Notizblocks und geben Sie eine Anfangsbezeichnung in die Hauptfunktion ein: "bis zum Titel" Notepad ".
Der Parameterkonstruktor ist in der Formularklasse Main_Window definiert, und die übergebenen Parameter sind der Titelname -Konstruktor wie folgt:
Main_window (String titlename) { / *** Der mit dem Parameterkonstrukt übergebene Parameter ist der Dateiname* / this.titlename = Titlename; } Beachten Sie, dass: Der Titel der Software lautet: Untitled Notepad Beim Öffnen einer Datei ist der Titel der geöffnete Dateiname. Beim Speichern des gespeicherten Dateinamens ist der Titel der gespeicherte Dateiname. Beim Speichern des Dateinamens ist der gespeicherte Dateiname. Die Methode, um den Dateinamen zu erhalten (ohne den Pfad), lautet:
Shlnotepad.setText ((neue Datei (ffiledir.trim ())). getName ()); // Erhalten Sie den Dateinamen (ohne Pfad), um den Titel festzulegen
Der Einfachheit halber habe ich es als Satzcode abgekürzt
Legen Sie das Programmsymbol fest, setzen Sie es in das Projektverzeichnis ein und Sie können es direkt zur Verwendung vorstellen
Denken: Wenn Sie den Benutzer auffordern, ob Sie speichern möchten, können Sie nicht nur prüfen, ob der Pfad leer ist. Sie sollten prüfen, ob die Tastatur gedrückt wurde, dh, ob sich eine Änderung vorliegt und ob sich der Inhalt geändert hat (es kann mit der rechten Maustaste klicken, um sie direkt zu löschen und nicht durch die Tastatur weitergeführt).
6. Definition der anderen drei Dialogfelder
1. Finden Sie ein Dialogfeld
Klicken Sie auch mit der rechten Maustast
Die Ergebnisse sind wie folgt:
Dieses Fenster wird hier geteilt, die Suche, Ersatz und Suche nach dem nächsten Ort. Das Bearbeitungsfeld für Suchinhalte kann die Schaltfläche zum Klicken auslösen. Das Suchinhaltsbearbeitungsfeld und das Ersatzfeld sind nicht leer. Die Ersatzfunktion kann ausgelöst werden. Hier finden Sie eine Liste der Suche nach dem nächsten Ort und der Ersatzmethode, um den nächsten Ort zu suchen:
Idee: Erhalten Sie zunächst alle Zeichenfolgen im Hauptfenster, erhalten Sie den Inhalt, der durchsucht werden muss, rufen Sie direkt die von Java bereitgestellte Suchzeichenfunktion auf, um den Startindex zu erhalten, und fügen Sie dann den Suchinhalt der Länge der String -Länge hinzu, die die Zeichenfolge ist, die gerendert werden muss, und rufen Sie dann die Rendernfunktion im Hauptfenster auf, um die Zeichenfolge zu rendern, und zeigen Sie sie anschließend an.
Der spezifische Code lautet wie folgt:
find_next.addsSelectionListener (neu SelectionAdapter () {@Override public void widgetSelected (selectionEvent e) {parestal = util.shell.getText_1 (); // den Hauptfenster -Text -Inhalt true Index = paröstlich von der Suche in den Index {Index { / ///. JOPTIONPANE.SHOWMESSAGEILOG (NULL, nicht gefunden/""+textContent.GETTEXT ()+"/" "," Notepad ", joptionPane.Eror_message); index+textContent.GeteText (). Länge ();}});Der Ersatzknopf löst das Ereignis wie folgt aus.
Ersetzen Sietn.AddsSelectionListener (neuer SelectionAdapter () { /*** Taste Ereignis ersetzen* /public void widgetSelected (selectionEvent e) {parestal Util.shell.showText (parestre);2. Gründung des Dialogfelds "AboutAuthor"
Die Erstellung dieses Dialogfelds entspricht dem Suchdialogfeld. Nennen Sie es über Author. Die spezifischen Renderings sind wie folgt:
Dieses Dialogfeld umfasst keine verwandten Algorithmen. Fügen Sie drei JLabel -Tags hinzu und geben Sie drei Sätze ein.
3. Einrichtung des Dialogfelds GO_TO
Ich werde nicht viel über die Methode zum Erstellen eines Dialogfelds sagen. Die spezifischen Renderings sind wie folgt:
Die Code -Implementierung ist wie folgt:
queding.addSelectionListener (neu SelectionAdapter () { / *** Bestätigen Sie, zu einer bestimmten Zeile zu springenRufen Sie die Methode Gotooneline () im Hauptfenster an
public void gotooneline (int row) {getText (). setSelection (row); }Zu diesem Zeitpunkt wurden die allgemeinen Funktionen des gesamten Notizblocks abgeschlossen
7. Zusammenfassung
Vom Beginn des Schreibens bis zum endgültigen Abschluss dauerte es ungefähr 2-3 Tage. Ich habe viele verwandte Algorithmen gelernt. Java -Programmierung ist sehr bequem. Viele Methoden müssen nicht von mir selbst implementiert werden. Sie können sie einfach direkt anrufen. Java hat jedoch auch viele Mängel. Zum Beispiel habe ich das Dialogfeld Java-Besitzes verwendet, um das Fenster zu schließen. Das Ergebnis war besonders festgefahren. Wenn Sie interessiert sind, können Sie das Dialogfeld Exit anpassen. 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.
Zum Beispiel:
母串为“ab记事本def3g” 需要从”3”这个字符串开始向前查找”记事本”字符串,可将母串中”3”字符串所在位置之前的字符串”ab记事本def”完全倒置为”g3fed本事记ba” 将查找内容也倒置成”本事记” 再调用Java内带的字符串查找函数查找所在位置,再还原即可。
以上就是手把手编写记事本的详细步骤,Java基于SWT插件编写桌面记事本应用程序,希望对大家的学习有所帮助。