Cet article présente le processus détaillé du bloc-notes de l'écriture Java basé sur SWT. Il est partagé avec vous pour votre référence. Le contenu spécifique est le suivant
Il peut réaliser les fonctions de base du bloc-notes de bureau dans le système Windows, l'enseignement de style imbécile et le fonctionnement étape par étape. Xiaobai peut également rédiger une application complète par lui-même.
Outils requis: Eclipse (avec plug-in SWT)
Le produit fini est le suivant:
Fonction d'application Introduction:
Analyse fonctionnelle:
Le menu du fichier comprend
1.1. Créer (n) ctrl + n
1.2Open (O) Ctrl + O
1.3SAVE (S) CTRL + S
1.4SAVE AS (A)
1,5 sortie (x)
Le menu d'édition comprend:
2.1 Annuler (U) Ctrl + Z
2.2 cisaillement (t) ctrl + t
2.3 Copie (c) Ctrl + C
2.4 pâte (p) ctrl + v
2.5 Supprimer (L) Del
2.6 trouver (d) ctrl + f
2.7 Trouver le lieu suivant (n) F3
2.8 Remplacer (R) Ctrl + H
2.9 Aller à (g) ctrl + g
2.10 Sélectionnez tous les (a) Ctrl + A
2.11 Heure / Date (D) F5
Le menu du format comprend
3.1 Enveloppement de ligne automatique (W)
3.2 FONT (F)
Le menu Affichage comprend
4.1 Bar (s) d'état (s)
Le menu d'aide comprend
5.1 Voir l'aide (H)
5.2 sur le bloc-notes (a)
Ensuite, je vous apprendrai étape par étape pour écrire un bloc-notes avec plusieurs catégories spécifiques comme suit:
1.Notepad.java
Cette classe est la classe d'interface principale, qui contient les événements d'écoute de chaque bouton
2. Classe util.java Cette classe est une classe auxiliaire, qui facilite l'appel des membres définis dans la classe de fenêtre principale dans d'autres classes.
3. À peu près.java
À propos de la classe de l'auteur, une fenêtre de dialogue pour afficher les informations de l'auteur
4.findwindow.java
Une fenêtre de dialogue pour la fonction de recherche
5.go_to.java
Accédez à une fenêtre de dialogue de la fonction
6.Penmethod.java
Il y a deux façons d'ouvrir un fichier encapsulé
7.savamethod.java
Deux façons d'enregistrer les fichiers
8.swtrsourceManager.java
Cette classe est une classe importée en externe et est utilisée pour charger des images
9.test.java
Entrée du programme, fichiers de pot de package pratique plus tard
10.quitMethod.java
Deux façons de fermer la fenêtre sont encapsulées
Étapes d'écriture:
un. Créez un nouveau projet SWT et créez la première fenêtre
Ouvrez Eclipse, new-> autre-> WindowBuilder-> SWT Designer-> SWT / JFACE Java Project. Nommez le bloc-notes du nom du projet
Ouvrez le projet de bloc-notes nouvellement créé, cliquez avec le bouton droit sur le package sur SCR pour créer un nouveau package, nommé com.chance.org
Conseils: Les règles de dénomination des packages sont mieux utilisées pour utiliser com. Custom.org. Ne vous demandez pas pourquoi, vous comprendrez après avoir travaillé dans le futur.
Cliquez avec le bouton droit sur le package nouvellement créé Nouveau-> Autre-> WindowBuilder-> SWT Designer-> SWT -> Nom de la fenêtre Application Nom de la fenêtre.
À ce stade, nous avons construit la première fenêtre SWT et cliqué sur la conception sur le côté droit de la source pour afficher l'interface graphique du numéro nouvellement créé pour réaliser la programmation visuelle.
Renommez la propriété TXT dans les propriétés du formulaire de notes de notes: Bloc-notes
Faites glisser le composant Composites dans Composites dans le composant de blocs-notes, et modifiez sa propriété de mise en page pour remplir la mise en place, c'est-à-dire une disposition de remplissage, afin que l'interface entière puisse être transformée en domaine d'édition plus tard. Faites ensuite glisser le composant texte dans le composant composites. Vérifiez l'attribut H_Scroll et l'attribut v_scroll dans le style de propriété du composant texte à True
Description: H_Scroll est une barre de défilement horizontale, V_Scroll est une barre de défilement verticale
deux. Définissez les étiquettes connexes de la barre de menu et la disposition globale du formulaire
Sélectionnez le composant de barre de menu pour le faire glisser dans le formulaire principal
1. Définissez le premier élément de menu (fichier)
Sélectionnez le composant de menu CASCDE, faites-le glisser dans le composant de la barre de menu et modifiez l'attribut: modifiez l'attribut de variable à File_Menu et modifiez le texte en fichier (f);
1.1 Paramètres Sous-menu: Créer (n) Ctrl + n
Sélectionnez l'élément de menu à ajouter au composant de menu CASCDE, modifiez l'attribut: modifiez l'attribut de variable à new_file et modifiez le texte vers: new (n) ctrl + n;
1.2 Paramètres Sous-menu: ouvrir (o) Ctrl + O
Sélectionnez l'élément de menu à ajouter au composant de menu Cascde, modifiez l'attribut: modifiez l'attribut de variable à Open_FILE et modifiez le texte pour: ouvrir (o) Ctrl + O
1.3 Paramètres Sous-menu: Enregistrer (o) Ctrl + S
Sélectionnez l'élément de menu à ajouter au composant de menu Cascde, modifiez l'attribut: modifiez l'attribut de variable à Save_file et modifiez le texte pour: Enregistrer (o) Ctrl + S
1.4 Paramètres Sous-menu: Enregistrer sous (a)
Sélectionnez l'élément de menu à ajouter au composant de menu Cascde, modifiez l'attribut: modifiez l'attribut de variable à Save_AS et modifiez le texte pour: Enregistrer sous (a)
1.5 Paramètres Sous-menu: Exit (x)
Sélectionnez l'élément de menu à ajouter au composant de menu Cascde, modifiez l'attribut: modifiez l'attribut de variable pour quitter et modifiez le texte pour: quitter (x)
2. Définissez le deuxième élément de menu (Modifier)
Sélectionnez le composant de menu CASCDE, faites-le glisser dans le composant de la barre de menu et modifiez l'attribut: modifiez l'attribut variable à EDIT_MENU et modifiez le texte pour modifier (e);
2.1 Paramètres Sous-menu: annuler (u) Ctrl + Z
Sélectionnez l'élément de menu à ajouter au composant de menu CASCDE, modifiez l'attribut: modifiez l'attribut de variable à UNDO et modifiez le texte pour: UNDO (U) CTRL + Z, et modifiez l'activation en false;
2.2 Paramètres Sous-menu: Cut (T) Ctrl + T
Sélectionnez l'élément de menu à ajouter au composant de menu CASCDE, modifiez l'attribut: modifiez l'attribut de variable pour couper et modifiez le texte pour: couper (t) ctrl + t, et modifier l'activation en false;
2.3 Paramètres Sous-menu: Copie (C) Ctrl + C
Sélectionnez l'élément de menu à ajouter au composant de menu Cascde, modifiez l'attribut: modifiez l'attribut de variable pour copier et modifiez le texte pour: copier (c) Ctrl + C, et modifier l'activation en false;
2.4 Paramètres Sous-menu: Coller (P) Ctrl + V
Sélectionnez l'élément de menu à ajouter au composant de menu Cascde, modifiez l'attribut: modifiez l'attribut de variable à coller et modifiez le texte pour: coller (p) ctrl + v
2.5 Paramètres Sous-menu: Supprimer (L) Del
Sélectionnez l'élément de menu à ajouter au composant de menu CASCDE, modifiez l'attribut: modifiez l'attribut variable pour supprimer et modifiez le texte pour: supprimer (l) del et modifier activer en false;
2.6 Paramètres Sous-menu: trouver (D) Ctrl + F
Sélectionnez l'élément de menu à ajouter au composant de menu CASCDE, modifiez l'attribut: modifiez l'attribut de variable pour trouver et modifiez le texte pour: trouver (D) Ctrl + F, et modifier l'activation en false;
2.7 Paramètres Subménu: Trouver le lieu suivant (n) F3
Sélectionnez l'élément de menu à ajouter au composant de menu CASCDE, modifiez l'attribut: modifiez l'attribut de variable à find_next et modifiez le texte pour: trouver la place suivante (n) f3 et modifier l'activation en false;
2.8 Paramètres Sous-menu: Remplacer (R) Ctrl + H
Sélectionnez l'élément de menu à ajouter au composant de menu CASCDE, modifiez l'attribut: modifiez l'attribut de variable pour remplacer et modifiez le texte pour: remplacer (R) Ctrl + H et modifier l'activation en false;
2.9 Paramètres Sous-menu: Allez à (g) Ctrl + G
Sélectionnez l'élément de menu à ajouter au composant de menu Cascde, modifiez l'attribut: modifiez l'attribut de variable à go_to et modifiez le texte pour: accéder à (g) ctrl + g
2.10 Paramètres Sous-menu: sélectionnez tous (a) Ctrl + A
Sélectionnez l'élément de menu à ajouter au composant de menu CascDE, modifiez l'attribut: modifiez l'attribut de variable à Selectall et modifiez le texte pour: sélectionnez tous les (a) Ctrl + A
2.11 Paramètres Sous-menu: heure / date (d) F5
Sélectionnez l'élément de menu à ajouter au composant de menu Cascde, modifiez l'attribut: modifiez l'attribut de variable pour montrer et modifiez le texte à: heure / date (d) F5
3. Définissez le troisième élément de menu (format)
Sélectionnez le composant de menu CASCDE, faites-le glisser dans le composant de la barre de menu et modifiez l'attribut: modifiez l'attribut variable à format_menu et modifiez le texte au format (o);
3.1 Paramètres Sous-menu: enveloppement de ligne automatique (W)
Sélectionnez l'élément de menu à ajouter au composant de menu CascDE, modifiez l'attribut: modifiez l'attribut de variable à Auto_enter et modifiez le texte pour: enveloppement de ligne automatique (W)
3.2 Paramètres Sous-menu: Font (F)
Sélectionnez l'élément de menu à ajouter au composant de menu CascDE, modifiez l'attribut: modifiez l'attribut de variable à setFont et modifiez le texte à: Font (F)
4. Définissez le quatrième élément de menu (Affichage)
Sélectionnez le composant de menu CASCDE, faites-le glisser dans le composant de la barre de menu et modifiez l'attribut: modifiez l'attribut de variable à View_Menu et modifiez le texte à View (V);
4.1 Paramètres Sous-menu: barre d'état (s)
Sélectionnez l'élément de menu à ajouter au composant de menu Cascde, modifiez l'attribut: modifiez l'attribut de variable à l'état et modifiez le texte en: barre d'état (s)
5. Définissez le cinquième élément de menu (aide)
Sélectionnez le composant de menu CASCDE, faites-le glisser dans le composant de la barre de menu et modifiez l'attribut: modifiez l'attribut variable à help_menu et modifiez le texte pour aider (h);
5.1 Paramètres Sous-menu: Affichage de l'aide (H)
Sélectionnez l'élément de menu pour l'ajouter au composant de menu Cascde, modifiez l'attribut: modifiez l'attribut de variable à LookHelp et modifiez le texte pour: voir l'aide (h)
5.2 Paramètres Sous-menu: à propos du bloc-notes (a)
Sélectionnez l'élément de menu pour l'ajouter au composant de menu CASCDE, modifiez l'attribut: modifiez l'attribut de variable à environ Author et modifiez le texte vers: à propos du bloc-notes (a)
À ce stade, le rendu de l'ensemble de la disposition de la page a été défini comme suit:
Ensuite, implémentez diverses fonctions
trois. Clés de raccourci du menu des paramètres
Introduction à la fonction setaccelerator () : utilisez la fonction setaccelerator () pour définir les touches de raccourci pertinentes. Les paramètres passés sont des valeurs clés. Par exemple, la clé de raccourci Ctrl + N est définie comme: objet. setaccelerator (swt.ctrl + 'n');
La méthode de réglage de la touche de raccourci F5 est: object.setaccelerator (swt.f5);
À partir de cela, nous pouvons définir toutes les touches de raccourci requises
new_file.setaccelerator (swt.ctrl + 'n'); // Créer un nouveau raccourci de fichier open_file.setaccelerator (swt.ctrl + 'o'); // Enregistrer un raccourci de fichier undo.setaccelerator (swt.ctrl + 'z'); // Undo a raccourci Cut.setaccelerator (swt.ctrl + 't'); // coupe un raccourci copy.setaccelerator (swt.ctrl + 'c'); // Copiez un raccourci paste.setaccelerator (swt.ctrl + 'v'); // Collez la clé de raccourci Delete.Setaccelerator (swt.del); // Supprimer la clé de raccourci Find.setaccelerator (swt.ctrl + 'f'); // Trouvez la clé de raccourci find_next.setaccelerator (swt.f3); // Trouvez la touche de raccourci suivante Remplace.setaccelerator (swt.ctrl + 'h'); // Remplacez la touche de raccourci go_to.setaccelerator (swt.ctrl + 'g'); // accédez à la touche de raccourci selectall.setaccelerator (swt.ctrl + 'a'); // sélectionnez toutes les touches de raccourci showdate.setaccelerator (swt.f5); // montre des touches de raccourci temporelles
4. Ajouter la fonction d'écoute d'événements (1) Classe de fichiers
Ajouter une fonction d'écoute d'événements à chaque menu du fichier
1. Ajouter l'événement d'écoute du menu "Exit"
Description de la fonction: L'implémentation du déclenchement de ce menu pour quitter l'application est relativement simple. Appelez le système System System.exit (0); Vous pouvez cliquer sur le composant "Heure / Date (F5)" en mode Design, puis cliquez sur "Afficher l'événement" -> Sélection-> Double-cliquez WidgetSelected
Le code d'événement est le suivant:
QUIT.ADDDSELECTIONLISTER (NOUVEAU SELECTIONADAPTER () {/ ** * Ajoutez l'événement d'écoute du menu "Exit" * Fonction Description: Le déclenchement de ce menu quittera l'application * / public void widgetSelected (SelectionEvent E) {System.exit (0);}});Mais le fait est-il aussi simple? En fait, ce n'est pas le cas que vous pouvez simplement cliquer pour quitter, puis quitter directement. Il y a encore des indices lors de l'arrêt dans un vrai bloc-notes, donc le code amélioré est le suivant;
public void diyquit () {/ ** * Lors de la sortie de la fonction, déterminez s'il est nécessaire de l'enregistrer * / string thes; System.out.println (util.shell.getText (). GetText ()); if (util.shell.filedir! = null || util.shell.getText (). getText ()! = "") {// Le répertoire de fichiers n'est pas vide, ce qui signifie qu'il existe un fichier ouvert. Vous devez vous demander s'il faut l'enregistrer si (util.shell.filedir == null) {Tips = "Le texte sans titre du fichier a changé. / N" + "Voulez-vous enregistrer le fichier?"; } else {tips = "file" + util.shell.filedir + "Le texte de" a changé. / n "+" Voulez-vous enregistrer le fichier? "} int n = joptionpane.showconfirmDialog (null, tonnes," notepad ", joptionpane.yes_no_cancel_option); if (n == 0) {// oui return 0 non rendez-vous 1 annuler 2 SAVEMETHOD SAVEMETHOD = new Savemethod (); Enregistrer le fichier et ouvrir le fichier} else if (n == 1) {// ne return pas System.exit (0);} else if (n == 2) {// return annule; TIPS = "Le texte sans titre du fichier a changé. / n "+" Voulez-vous enregistrer le fichier? "; int n = joptionpane.showconfirmDialog (null, tonnes," notepad ", joptionpane.yes_no_cancel_option); if (n == 0) {// oui return 0 non renvoyer 1 annuler 2 SaveMethod SaveMethod = new SaveMethod (); Savemethod.););); le fichier et ouvrir le fichier} else if (n == 1) {// ne renvoie pasJe définis chaque opération dans le prochain événement d'écoute en fonction. La méthode d'addition d'événements d'écoute est la même que la première étape. La méthode de mise en œuvre spécifique est la suivante:
2. Ajoutez le menu "Enregistrer sous" pour écouter les événements
Description de la fonction: déclenchez ce menu et la fenêtre Enregistrer sous forme de fenêtre et enregistre le fichier comme ailleurs. Afin de faciliter la réutilisation du code, enregistrez-le en le résumant dans une méthode et appelez le code comme suit:
public void Saveas () {/ ** * le résume comme cette méthode pour faciliter l'appel * / fileDialog Dialog = new FileDialog (util.shell.shell, swt.save); Dialog.SetFilterPath (System.getProperty ("C: // Documents and Settings")); // Définissez le chemin par défaut pour ouvrir Dialog.SetFilteRextensions (new String [] {"* .txt", "*. *"}); // Définissez l'extension de la boîte de dialogue de fichiers ouverte.setFilterames (new String [] {"Text Files (* .txt)", "Tous les fichiers (*. *)"}); // Définissez le nom de l'extension affichée dans la chaîne déroulante Drop-down String File = Dialog.Open (); // Ouvrez la fenêtre et retournez dans le répertoire de fichiers sélectionné par l'utilisateur if (fichier! = Null) {util.shell.filedir = file; // Enregistrer le répertoire de fichiers, utilisez plus tard} if (file! = Null) {util.shell.shell.Sechtx file.trim ())). getName ()); // Obtenez le nom de fichier (excluant le chemin d'accès) pour définir le titre FileWriter FileWriter; try {filewriter = new FileWriter (fichier); BufferedWriter out = new BufferedWriter (FileWriter); out.write (util.shell.getText (). getText ()); out.close (); filewriter.close (); } catch (ioException e1) {e1.printStackTrace (); }}}3. Ajouter l'événement d'écoute du menu "Enregistrer"
Description de la fonction: Lorsque le menu "Enregistrer" est déclenché, la fenêtre de fichier Enregistrer apparaît, puis sélectionnez le répertoire et entrez le nom du fichier à enregistrer. En ce qui concerne la logique de l'épargne, je dois parler de la sauvegarde ici: au début, je réfléchissais à la façon de déterminer si le document actuel est enregistré ou enregistré comme. Plus tard, j'ai soigneusement observé le bloc-notes de bureau et j'ai constaté que la boîte de dialogue est apparue par sauvegarde et sauvegarde comme c'est le même. Il vous suffit de faire une légère différence pour déterminer s'il faut enregistrer ou enregistrer car le jugement est le suivant: s'il est enregistré, cela signifie que Filedir existe, et vous pouvez appeler directement la fonction enregistrée. Si Filedir n'existe pas, cela signifie que le fichier est nouvellement ouvert et que le chemin n'a pas encore été déterminé, alors sautez pour enregistrer sous forme de formulaire.
Tout d'abord, définissez une chaîne de variables globale filedir = null; Assignez-le à vide et tous les fichiers ne sont pas enregistrés par défaut. Ensuite, qu'il s'agisse d'ouvrir le fichier ou de l'enregistrer en tant que fichier, le répertoire où le fichier est situé (y compris le nom du fichier et le nom du suffixe) est enregistré dans Filedir, et déterminez enfin si Filedir est vide dans l'événement de sauvegarde.
Le code est le suivant:
public void Save () {/ ** * SAVE FILE * / if (util.shell.filedir! = null) {// signifie que le fichier a un répertoire et l'enregistre directement lors de l'enregistrement, et il n'est pas nécessaire de pop-up util.shell.shell.settext ((nouveau fichier (util.shell.filedir.trim ())). GetName ()); // Obtenez le nom du fichier (excluant le chemin) pour définir le titre de fichier filewriter; 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 {// Sinon, il n'est jamais enregistré, puis enregistre sous la fenêtre Saveas (); }}4. Ajouter l'événement d'écoute du menu "ouvert"
Description de la fonction: Lorsque le menu "Ouvrir" est déclenché, la fenêtre de fichier ouvert apparaît, puis sélectionnez le fichier à ouvrir. Afin de réutiliser le code, la méthode d'ouverture est encapsulée en code de fonction comme suit:
public void openFile () {if (util.shell.filedir! = null || util.shell.getText (). getText ()! = "") {String Tips = "file" + util.shell.filedir + "Le texte de" a changé. / n "+" voulez-vous enregistrer le fichier? "; int n = joptionpane.showconfirmDialog (null, tonnes," notepad ", joptionpane.yes_no_cancel_option); if (n == 0) {// oui return 0 non renvoyer 1 renvoyer 2 SaveMethod SaveMethod = new SaveMethod (); Savemethod.);); le fichier et ouvrez le fichier} else if (n == 1) {// retour} else if (n == 2) {// return annule return;}} else {filedialog = new FileDialog (util.shell.shell, swt.open); Dialog.setFilteRextensions (new String [] {"* .txt", "*. *"}); // Définit l'extension du fichier ouvert Dialog.setFilterames (new String [] {"Text Files (* .txt)", "Tous les fichiers (*. *)"}); // Définir l'extension affichée dans la boîte de drop-down File file STRAGE = dialog.);); Le répertoire de fichiers sélectionné par l'utilisateur (y compris le fichier) if (file == null) {return;} util.shell.filedir = file; dans = new BufferedReader (FileReader); String S = null; util.shell.getText (). e1.printstackTrace ();}} catch (filenotfoundException e2) {e2.printStackTrace ();5. Ajouter le "nouveau" menu d'écoute de menu
Description de la fonction: Lorsque l'événement est déclenché, créez une nouvelle fenêtre. Si le fichier actuel n'est pas enregistré, il est invité à l'enregistrer, sinon une nouvelle page sera sautée pour générer.
Le principe de génération d'une nouvelle page: réinitialiser le titre, initialiser Filedir et initialiser le domaine d'édition. Ici, vous extraire le code pour ouvrir le nouveau fichier dans une méthode, ce qui est pratique pour appeler le code comme suit:
void openNewfile () {if (util.shell.filedir! = null || util.shell.getText (). getText ()! = "") {String Tips = "file" + util.shell.filedir + "Le texte de" a changé. / n "+" Voulez-vous enregistrer le fichier? "; int n = joptionpane.showconfirmDialog (null, tonnes," notepad ", joptionpane.yes_no_cancel_option); if (n == 0) {// oui return 0 non renvoyer 1 renvoyer 2 SaveMethod SaveMethod = new SaveMethod (); // do it oui, alors le fichier et le fichier» Fichier} else if (n == 1) {// RETOURS NO} else if (n == 2) {// return annuler; Util.shell.filedir = null;} else {String t = "Unt Title (++ util.shell.cnt +") - Notation ";4. Ajouter la fonction d'écoute d'événements (2) Classe éditoriale
Ajouter une fonction d'écoute d'événements pour chaque menu
1. Ajoutez le menu "Show Time" pour écouter les événements
Description de la fonction: Lorsque l'événement est déclenché, l'heure du système sera affichée au curseur dans la zone d'édition: Obtenez l'heure du système actuelle, convertissez-la en type de chaîne, puis appelez la méthode Text.APPEND (STR) pour afficher l'heure après le curseur de la boîte de modification.
1.1 Ajoutez une fonction d'écoute d'événements pour obtenir la méthode d'heure actuelle du système: appelez l'objet SimpledateFormat pour formater l'heure, puis appelez la date pour obtenir l'heure.
Le problème au début: il ne peut être ajouté qu'à la fin du contenu à chaque fois. Si vous y réfléchissez attentivement, vous devez localiser la position actuelle du curseur, puis épisser la chaîne avant le curseur + la chaîne après le curseur, puis l'afficher ensemble.
J'ai cherché longtemps et j'ai constaté que getCaretPosition () vient de rentrer en plastique, qui devrait être celui qui obtient la position actuelle du curseur. Je l'ai essayé comme prévu. Ensuite, implémentez la technologie d'épissage de chaîne: S1.SubString (0, index) + S2 + S1.SubString (index, s1.length ());
La nouvelle chaîne retournée.
Problèmes qui surviennent: après l'épissage, la sortie est directement, ce qui entraîne le contenu précédent épissé avec la nouvelle chaîne plus tard. Après une longue période de changement, j'ai trouvé que je dois appeler la méthode SetText (String). Avant la sortie, effacez d'abord le contenu affiché dans la boîte d'édition précédente. Le contenu de la fonction d'écoute finale est le suivant:
showDate.AddDelectionListener (new SelectionAdapter () {/ ** * Ajoutez l'événement d'écoute du menu "Temps et date" * Fonction Description: déclenchez ce menu pour ajouter le temps du système actuel à la fin du curseur de la boîte d'édition * / public void widgetSelected (Sélection E) {int index = getText (). Box // System.out.println (index); SimpledateFormat DF = new SimpledateForT ("Yyyy-mm-dd HH: MM: SS"); GetText (). SetText ("");La fonction de chaîne d'épissage est la suivante:
public String insertString (String S1, String S2, int index) {/ ** * Implémentez la fonction d'insertion de la chaîne * Les trois paramètres passés sont: la chaîne d'origine, la chaîne à insérer, et la position d'insertion * Le renvoyé est la chaîne insérée * / return S1.SubString (0, index) + S2 + S1.SubString (index, sursther }2. Ajoutez le menu "Sélectionnez All" pour écouter les événements
Description de la fonction: déclenchez ce menu pour sélectionner toutes les chaînes de champ de texte
La boîte d'édition en Java est en fait livrée avec une fonction SELECTION ALL. Haha, vous pouvez appeler text.selectall () directement. On estime qu'il existe également une copie et un collage prêts à l'emploi. J'ai presque oublié. Après avoir sélectionné tout, vous devez déterminer si le contenu sélectionné est vide. S'il n'est pas vide, vous devez définir les boutons "Supprimer" et "Coupez" à la sélection facultative Tous les codes comme suit:
selectall.adddSelectionListener (new SelectionAdapter () {/ ** * Ajoutez l'événement d'écoute du menu "Sélectionnez tout" ! = NULL) {// Si le contenu n'est pas vide, il y a du contenu sélectionné, vous devez donc définir les boutons "delete" "Cut" et "Copy" sur Facultatif.3. Ajouter l'événement de surveillance du menu "Cut"
Description de la fonction: déclenchez ce menu, réalisez le code de méthode Cut () de la zone d'édition qui appelle directement la méthode Cut () de la zone d'édition comme suit:
Cut.AddDelectionListener (new SELECTIONADAPTER () {/ ** * Ajoutez l'événement d'écoute du menu "Cut" * Fonction Description: déclenchez ce menu pour couper la chaîne sélectionnée * / public void widgetSelected (SelectionEvent e) {getText (). Cut ();}});4. Ajouter l'événement de surveillance du menu "coller"
Description de la fonction: déclenchez ce menu et implémentez le code de méthode paste () qui appelle directement la zone d'édition en collant le contenu du presse-papiers est la suivante:
paste.AddDelectionListener (new SELECTIONADAPTER () {/ ** * Ajoutez l'événement d'écoute du menu "coller" * Fonction Description: Déclenchez ce menu pour coller le contenu dans le presse-papiers dans la boîte d'édition * / public void widgetSelected (SelectionEvent e) {getText (). Paste ();}});5. Ajouter le menu "Copier" pour écouter les événements
Description de la fonction: déclenchez ce menu, implémentez le code de méthode copy () qui appelle directement la zone d'édition en copiant le contenu sélectionné comme suit:
copy.adddSelectionListener (new SELECTIONADAPTER () {/ ** * Ajoutez l'événement d'écoute du menu "Cut" * Fonction Description: déclenchez ce menu pour couper la chaîne sélectionnée * / public void widgetSelected (SELECTIONEVENT E) {text.copy ();}6. Ajouter l'événement de surveillance du menu "Annuler"
Description de la fonction: déclenchez ce menu, annulez l'opération actuelle, annulez l'algorithme impliqué dans cette fonction est compliqué. Pour le moment, ce bloc-notes ne prend pas en charge la méthode de l'annulation du bouton, mais prend en charge un clic droit UNDO (le composant de texte Java l'accompagne lorsque le clic droit n'est pas écrit par moi, haha)
7. Ajouter le menu "Find" pour écouter les événements
Description de la fonction: déclenchez ce menu et effectuez une opération de recherche
find.adddSelectionListener (new SELECTIONADAPTER () {/ ** * Une boîte de dialogue pour ajouter une fonction de recherche, où vous devez cliquer sur trouver, puis une boîte de dialogue apparaît, entrez le contenu pertinent de la recherche * / public void widgetSelected (SELECTIONEVENT E) {findWindow FW = New FindWindow (shell, swt.Dialog_Trim); FW.Open-);4. Ajouter la fonction d'écoute d'événements (3) Classe auxiliaire
En plus de plusieurs événements de menu dans la barre de menu, vous devez également écouter les événements du clavier. Autrement dit, si un clavier tape un champ de texte, l'affichage du menu pertinent sera déclenché: annuler, rechercher, trouver et trouver la prochaine place, remplacer ces quatre menus et le définir sur facultatif
1. Écoute des champs de texte
getText (). AddKeyListener (new KeyAdapter () {/ ** * Définissez les événements d'écoute du clavier * Si vous avez la saisie du clavier, vous devez définir les boutons pertinents pour être visibles: annuler, rechercher et trouver la prochaine place * / public void keylelente (keyEvent e) {if (getText (). GetText ()! = "") {// indicate find_next.setenabled (true);2. Implémentez la fonction d'écoute des événements du menu "Font"
Le code est le suivant:
setFont.AddDelectionListener (new SELECTIONADAPTER () {/ ** * Définissez l'événement d'écoute de la police * / public void widgetSelected (SELECTIONEVENT E) {FontDialog Oldfont = getText (). FontDialog.setfontlist (OldFont.getFontData ()); ! = null) {oldfont.dispose ();}}});cinq. Paramètres de balise
Extraire la fonction principale de la classe de test, paramétriser le titre de la forme du bloc-notes et passer une étiquette initiale dans la fonction principale: "UNT intitulé Bloc-notes"
Le constructeur de paramètres est défini dans la classe de formulaire main_window, et les paramètres passés sont le constructeur de nom de titre comme suit:
Main_window (String titleName) {/ ** * Le paramètre transmis avec la construction de paramètres est le nom de fichier * / this.titLename = titLename; } Notez que: Le titre du logiciel est: le bloc-notes sans titre Lors de l'ouverture d'un fichier, le titre est le nom de fichier ouvert. Lors de l'enregistrement du nom du fichier enregistré, le titre est le nom de fichier enregistré. Lors de l'enregistrement du nom du fichier est le nom de fichier enregistré. La méthode d'obtention du nom de fichier (sans compter le chemin) est:
shlnotepad.setText ((nouveau fichier (filedir.trim ())). getName ()); // Obtenez le nom du fichier (excluant le chemin) pour définir le titre
Pour plus de simplicité, je l'ai abrégé comme code de phrase
Définissez l'icône du programme, mettez-le dans le répertoire du projet et vous pouvez le présenter directement pour utiliser
Penser: Lorsque vous invitez à l'utilisateur si vous devez enregistrer, vous ne pouvez pas simplement voir si le chemin est vide. Vous devez vérifier si le clavier a été enfoncé, c'est-à-dire s'il y a un changement et si le contenu a changé (il peut être clic droit de le supprimer directement et n'a pas traversé le clavier)
6. Définition des trois autres boîtes de dialogue
1. Trouvez la boîte de dialogue
Cliquez également avec le bouton droit sur le package nouvellement créé Nouveau-> Autre-> WindowBuilder-> SWT Designer-> SWT -> Dialogue nommé Findwindow
Les résultats sont les suivants:
Cette fenêtre est partagée ici, la recherche, le remplacement et la recherche de la prochaine place. La boîte d'édition de contenu de recherche peut déclencher le bouton pour cliquer. La boîte d'édition de contenu de recherche et la boîte de remplacement ne sont pas vides. La fonction de remplacement peut être déclenchée. Voici une liste de la recherche suivante et du corps de la méthode de remplacement pour rechercher la prochaine place:
Idée: d'abord, obtenez toutes les chaînes de la fenêtre principale, puis obtenez le contenu qui doit être recherché, appelez directement la fonction de chaîne de recherche fournie par Java pour obtenir l'index de démarrage, puis ajoutez le contenu de recherche à la longueur de la chaîne qui est la chaîne qui doit être rendue, puis appelez la fonction de rendu dans la fenêtre principale pour rendre la chaîne, puis afficher.
Le code spécifique est le suivant:
find_next.adddSelectionListener (new SelectionAdapter () {@Override public void widgetSelected (SelectionEvent e) {parestr = util.shell.getText_1 (); // Obtenez la boîte de texte de la fenêtre principale contenu true index = Parestr.Indexof (textContent.getText (), index); // Obtenir la position de la recherche strict dans la chaîne parent de la chaîne parent de l'index iff JOptionPane.showMessageDialog (null, "non trouvé /" "+ textContent.getText () +" / "", "note de note", joptionpane.error_message); index + textContent.getText (). Length ();}});Le bouton de remplacement déclenche l'événement comme suit;
RemplaceBtn.AddDelectionListener (new SELECTIONADAPTER () {/ ** * Remplacez l'événement du bouton * / public void widgetSelected (SELECTIONEVENT E) {Parrestr = util.shell.getText_1 (); // Obtenez la boîte de texte de la fenêtre principale Parestr = Parestr.replaceFirst (uttrell.Shell. }});2. Établissement de la boîte de dialogue à peu près
La création de cette boîte de dialogue est la même que la boîte de dialogue de recherche. Nommez-le à propos de l'auteur. Les rendus spécifiques sont les suivants:
Cette boîte de dialogue n'implique pas d'algorithmes connexes. Ajoutez trois balises JLabel et entrez trois phrases.
3. Établissement de la boîte de dialogue Go_to
Je ne dirai pas grand-chose sur la méthode de création d'une boîte de dialogue. Les rendus spécifiques sont les suivants:
L'implémentation du code est la suivante:
Queding.AddDelectionListener (new SELECTIONADAPTER () {/ ** * Confirmez à sauter sur une certaine ligne * / public void widgetSelected (SelectionEvent E) {int n = Integer.parseint (goto_line.getText ()); goto_line.settext ("" + n + ""); util.shell.gotoonlineLeline (1);});Appelez la méthode GotoOneLeline () dans la fenêtre principale
public void GotoOneline (int row) {getText (). setSelection (row); }À ce stade, les fonctions générales de l'ensemble du bloc-notes ont été remplies
7. Résumé
Du début de l'écriture à l'achèvement final, il a fallu environ 2-3 jours. J'ai appris beaucoup d'algorithmes connexes. La programmation Java est très pratique. De nombreuses méthodes n'ont pas besoin d'être mises en œuvre par moi-même. Vous pouvez simplement les appeler directement. Cependant, Java a également de nombreuses lacunes. Par exemple, j'ai utilisé la boîte de dialogue java pour fermer la fenêtre. Le résultat a été particulièrement bloqué. 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.
Par exemple:
母串为“ab记事本def3g” 需要从”3”这个字符串开始向前查找”记事本”字符串,可将母串中”3”字符串所在位置之前的字符串”ab记事本def”完全倒置为”g3fed本事记ba” 将查找内容也倒置成”本事记” 再调用Java内带的字符串查找函数查找所在位置,再还原即可。
以上就是手把手编写记事本的详细步骤,Java基于SWT插件编写桌面记事本应用程序,希望对大家的学习有所帮助。