//Importer le package de classe JAVA
importer java.awt.* ;
importer java.awt.event.* ;
importer javax.swing.* ;
importer java.io.* ;
classe EditFile
{
//Constructeur par défaut
EditFile(){}
//Fonction de sauvegarde du fichier
void SaveFile (nom de chaîne, chaîne de chaîne)
{
essayer
{
//Déclare l'objet de sortie du fichier
FileOutputStream fos = new FileOutputStream(nom);
//Fichier de sauvegarde de sortie
fos.write(str.getBytes());
}
attraper (IOException e)
{
//Une erreur se produit et affiche un message d'erreur
System.out.println(e.toString());
}
}
//Fonction d'ouverture de fichier
Chaîne OpenFile (nom de la chaîne)
{
//Définit la chaîne str pour enregistrer le contenu du fichier
Chaîne str=null ;
//définir le compteur
int ch=0 ;
essayer
{
//Déclare l'objet d'entrée du fichier
FileInputStream fis = new FileInputStream(nom);
// Parcourez l'objet d'entrée et stockez la mémoire dans str
tandis que ((ch=fis.read())!=-1)
{
str=str+(char)ch;
}
//Ferme l'objet fichier
fis.close();
}
attraper (IOException e)
{
//Une erreur se produit et affiche un message d'erreur
System.out.println(e.toString());
}
//retourne la chaîne
return str;
}
}
la classe MyMainFrame étend JFrame implémente ActionListener
{
//nom de fichier
Chaîne nom de fichier=null ;
//Trouver une chaîne
Chaîne findtxt=null ;
//remplace la chaîne
Chaîne replacetxt=null ;
//Trouver la position de départ
int findtxton=-1;
//Trouver le bit de fin
int findtxtoff=-1;
// panneau du milieu
Conteneur c=getContentPane();
//menu
JMenuBar mainMb=nouveau JMenuBar();
//bouton de menu
JMenu fileMenu=nouveau JMenu("Fichier");
JMenu editMenu=nouveau JMenu("Modifier");
JMenu typeMenu=nouveau JMenu("format");
JMenuItem newItem=nouveau JMenuItem("Nouveau");
JMenuItem openItem=nouveau JMenuItem("open");
JMenuItem saveItem=new JMenuItem("Enregistrer");
JMenuItem saveasItem=new JMenuItem("Enregistrer sous");
JMenuItem exitItem=new JMenuItem("Quitter");
JMenuItem findItem=new JMenuItem("Rechercher");
JMenuItem findnextItem=new JMenuItem("Rechercher le suivant");
JMenuItem changeItem=new JMenuItem("remplacer");
JCheckBoxMenuItem changelineItem=new JCheckBoxMenuItem("Retour à la ligne automatique",false);
//Champ de texte
JTextArea txt=new JTextArea();
JTextArea txt2=nouveau JTextArea();
//Barre de défilement
JScrollPane jsp;
//Objet d'opération de fichier
EditFile ef=nouveau EditFile();
//Constructeur
MonFrameMain()
{
//Dessiner l'interface
c.setLayout(new BorderLayout());
jsp= nouveau JScrollPane(txt);
jsp.setHorizontalScrollBarPolicy(jsp.HORIZONTAL_SCROLLBAR_AS_NEEDED);
c.add(jsp,BorderLayout.CENTER);
mainMb.add(fileMenu);
fileMenu.add(newItem);
fileMenu.add(openItem);
fileMenu.add(saveItem);
fileMenu.add(saveasItem);
fileMenu.addSeparator();
fileMenu.add(exitItem);
mainMb.add(editMenu);
editMenu.add(findItem);
editMenu.add(findnextItem);
editMenu.add(changeItem);
mainMb.add(typeMenu);
typeMenu.add(changelineItem);
setJMenuBar(mainMb);
//Ajout d'un événement à l'écoute du menu
newItem.addActionListener(this);
openItem.addActionListener(this);
saveItem.addActionListener(this);
saveasItem.addActionListener(this);
exitItem.addActionListener(this);
findItem.addActionListener(this);
findnextItem.addActionListener(this);
changeItem.addActionListener(this);
changelineItem.addActionListener(this);
}
//fonction de gestionnaire d'événements
public void actionPerformed(ActionEvent e)
{
//Créer un objet d'opération de fichier
EditFile ef=nouveau EditFile();
//Si le bouton est cliqué, il est nouveau
if(e.getActionCommand()=="Nouveau")
{
//Définit le champ de texte comme vide
txt.setText(null);
//Le nom du fichier est vide
nom de fichier=null ;
}
//Si l'on clique sur le bouton pour ouvrir
si(e.getActionCommand()=="ouvrir")
{
//Définir un formulaire de fichier
FileDialog openDialog=new FileDialog(this,"Ouvrir le fichier...",FileDialog.LOAD);
//afficher le formulaire
openDialog.show();
//Si le fichier renvoyé n'est pas vide
si(openDialog.getFile()!=null)
{
//Obtenir le nom du fichier
filename=openDialog.getFile();
//Obtenir le contenu du fichier
txt.setText(ef.OpenFile(openDialog.getFile()));
}
}
//Si le bouton est cliqué pour enregistrer
if(e.getActionCommand()=="Enregistrer")
{
//S'il n'y a pas de nom de fichier
si (nom de fichier == nul)
{
//Définir un formulaire de fichier
FileDialog saveDialog=new FileDialog(this,"Enregistrer sous...",FileDialog.SAVE);
//afficher le formulaire
saveDialog.show();
//Si le fichier renvoyé n'est pas vide
si(saveDialog.getFile()!=null)
{
//Obtenir le nom du fichier
filename=saveDialog.getFile();
//sauvegarder le fichier
ef.SaveFile(filename,txt.getText());
}
}
autre
{
//Enregistre directement le fichier
ef.SaveFile(filename,txt.getText());
}
}
//Si vous cliquez sur le bouton pour enregistrer sous
if(e.getActionCommand()=="Enregistrer sous")
{
//Définir un formulaire de fichier
FileDialog saveDialog=new FileDialog(this,"Enregistrer sous...",FileDialog.SAVE);
//afficher le formulaire
saveDialog.show();
//Si le fichier renvoyé n'est pas vide
si(saveDialog.getFile()!=null)
{
//Obtenir le nom du fichier
filename=saveDialog.getFile();
//sauvegarder le fichier
ef.SaveFile(filename,txt.getText());
}
}
//Si l'on clique sur le bouton pour quitter
if(e.getActionCommand()=="Quitter")
{
//quitter
Système.exit(0);
}
//Si le bouton est cliqué, c'est la recherche
if(e.getActionCommand()=="Rechercher")
{
//Définir une boîte de dialogue
JOptionPane inputdia=nouveau JOptionPane();
//Définir la boîte de dialogue pour obtenir le texte de recherche
findtxt=inputdia.showInputDialog("Veuillez saisir le texte que vous souhaitez rechercher",null);
//Définit les coordonnées réelles
findtxton=-1;
findtxtoff=-1;
//Appelle la fonction de recherche
trouver();
}
//Si vous cliquez sur le bouton pour trouver le suivant
if(e.getActionCommand()=="Rechercher le suivant")
{
//Appelle la fonction de recherche
trouver();
}
//Si le bouton est cliqué, remplacez
if(e.getActionCommand()=="remplacer")
{
//Définir une boîte de dialogue
JOptionPane inputdia=nouveau JOptionPane();
//Obtenir rechercher et remplacer du texte
findtxt=inputdia.showInputDialog("Veuillez saisir le texte à remplacer",null);
replacetxt=inputdia.showInputDialog("Veuillez saisir le texte remplacé",null);
//Contenu de sauvegarde
txt2.setText(replacetxt);
txt2.selectAll();
txt2.copy();
//Appelle la fonction de recherche
trouver();
//si introuvable
si(findtxton==-1&&findtxtoff==-1)
{
}
//Si trouvé
autre
{
//remplacer
txt.paste();
}
findtxton=-1;
findtxtoff=-1;
}
//Si le bouton est cliqué, il sera automatiquement renvoyé à la ligne
if(e.getActionCommand()=="retour à la ligne automatique")
{
//Statut actuel du juge
if(changelineItem.isSelected()==true)
{
//Définit l'état de la barre de défilement
jsp.setHorizontalScrollBarPolicy(jsp.HORIZONTAL_SCROLLBAR_NEVER);
//Définit s'il faut envelopper ou non
txt.setLineWrap(true);
}
autre
{
jsp.setHorizontalScrollBarPolicy(jsp.HORIZONTAL_SCROLLBAR_AS_NEEDED);
txt.setLineWrap(false);
}
}
}
//trouver la fonction
recherche de vide public ()
{
//Définir une chaîne temporaire
Temps de chaîne ;
//Trouver du texte s'il n'est pas vide
si (findtxt! = null)
{
essayer
{
//Recherche
tempstr=txt.getText(findtxton+1,(txt.getText().length()-findtxton-1));
findtxton=findtxton+1+tempstr.indexOf(findtxt);
}
attraper (Exception e)
{
}
//Si le bit de départ change, il est trouvé
si(findtxton!=-1)
{
//Définit le bit de fin
findtxtoff=findtxton+findtxt.length();
}
autre
{
//Sinon, il affiche introuvable
findtxtoff=-1;
JOptionPane.showMessageDialog(null,"Introuvable");
}
//Sélectionne la pièce trouvée
txt.select(findtxton,findtxtoff);
}
}
}
classe publique TextEdit
{
//Fonction principale
public static void main (String args[])
{
//Déclaration pour définir le formulaire principal
MonFrameMainf=nouveau MonFrameMain();
f.setSize(640 480);
f.setTitle("Éditeur de texte");
//Affiche le formulaire principal
f.setVisible
(true);
}
/*
Problèmes avec le retour à la ligne automatique de JTextArea
-------------------------------------------------- ----------------------------------
Si la barre de défilement horizontale est définie sur JSctollpane.
, alors le JTextArea avec cet objet JSctollpane ajouté aura la fonction de retour à la ligne, n'est-ce pas ?
-------------------------------------------------- --------------------------
JTextArea.setLineWrap(boolean wrap)
------------- ---- --------------------------------------------------- ---- --------------
JTextArea.setLineWrap(boolean wrap)//Retour à la ligne général.
JTextArea.setWrapStyleWorld (boolean world) // Lignes de rupture utilisant les bords des mots comme limites
*/