/** *@author : Thomas Fageol *@date : Mardi 20 fevrier 2007 *@version : 0.7 *Probleme à regler : défileur, annuler *@Description : Bloc Note en JAVA */ /************/ /** import **/ /***********/ import javax.swing.*; import java.awt.*; import java.awt.event.* ; import java.lang.*; import java.io.* ; import java.util.* ; public class JBlocNote extends JFrame implements ActionListener { private JPanel container = new JPanel(); private FlowLayout layout = new FlowLayout(); /*********************/ /** La zone de texte **/ /********************/ private JTextArea textArea = new JTextArea(); /*********************/ /** La zone de texte **/ /********************/ private JScrollPane defileur = new JScrollPane(textArea); /*********************/ /** Le menu **/ /********************/ private JMenuBar menuBar = new JMenuBar(); private JMenu menu1 = new JMenu("Fichier"); private JMenu menu2 = new JMenu("Edition"); private JMenu menu3 = new JMenu("Options"); private JMenu menu4 = new JMenu("???"); //Element menu1 private JMenuItem nouveau= new JMenuItem("Nouveau"); private JMenuItem open = new JMenuItem("Ouvrir"); private JMenuItem save = new JMenuItem("Enregistrer"); private JMenuItem saveAs = new JMenuItem("Enregistrer sous"); private JMenuItem quit = new JMenuItem("Quitter"); //Element menu2 private JMenuItem annuler = new JMenuItem("Annuler"); private JMenuItem selectAll = new JMenuItem("Tout Selectionner"); private JMenuItem copy = new JMenuItem("Copier"); private JMenuItem cut = new JMenuItem("Couper"); private JMenuItem paste = new JMenuItem("Coller"); //Element menu3 private JMenuItem fondR = new JMenuItem("Fond Rouge"); //Element menu4 private JMenuItem about = new JMenuItem("About"); /*********************/ /** Autres attributs **/ /*********************/ File fileSave = new File ("c:\\"); boolean continueSave = false; /**************************/ /** Création de la fenetre **/ /**************************/ public JBlocNote() { super(); build(); //On initialise la fenetre } /*******************************/ /** Configuration de la fenetre **/ /******************************/ private void build() { this.setTitle("Nouveau - Bloc Note Java"); //Nom de la fenetre. this.setSize(600,400); //Taille de la fenetre. this.setLocationRelativeTo(null); //On centre la fenetre. this.setResizable(true); //On interdit le redimensionnement. this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Permet la fermeture si on clik sur la croix . this.setContentPane(getContainer()); //On lui spécifie un container principal. } /**********/ /** Main **/ /*********/ public static void main(String[] args) { JBlocNote gui = new JBlocNote(); //On crée une nouvelle instance de notre fenêtre. gui.setVisible(true); } private JPanel getContainer() { layout.setAlignment(FlowLayout.LEFT); //On place les composants à gauche. container.setLayout(layout); //On applique le layout. container.setBackground(Color.white); //Couleur de fond. //Afectation de touche raccourcie au differents elements du menu. nouveau.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.CTRL_MASK));//CTRL+N pour Nouveau. open.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_MASK));//CTRL+O pour Ouvrir. save.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK));//CTRL+S pour Enregistrer. quit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, InputEvent.CTRL_MASK));//CTRL+Q pour Quitter annuler.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z, InputEvent.CTRL_MASK));//CTRL+Z pour Annuler selectAll.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, InputEvent.CTRL_MASK));//CTRL+A pour Selectionner Tout copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK));//CTRL+C pour Copier cut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, InputEvent.CTRL_MASK));//CTRL+X pour Couper paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, InputEvent.CTRL_MASK));//CTRL+V pour Coller //Affectation d'action au different élément du menu. nouveau.addActionListener(this); open.addActionListener(this); save.addActionListener(this); saveAs.addActionListener(this); quit.addActionListener(this); annuler.addActionListener(this); selectAll.addActionListener(this); copy.addActionListener(this); cut.addActionListener(this); paste.addActionListener(this); fondR.addActionListener(this); about.addActionListener(this); //On ajoute les differents Item au Menu correspondant. menu1.add(nouveau); menu1.add(open); menu1.add(save); menu1.add(saveAs); menu1.add(quit); menu2.add(annuler); menu2.add(selectAll); menu2.add(copy); menu2.add(cut); menu2.add(paste); menu3.add(fondR); menu4.add(about); //On ajoute les menu à la barre de menu. menuBar.add(menu1); menuBar.add(menu2); menuBar.add(menu3); menuBar.add(menu4); this.setJMenuBar(menuBar); //Configuration de la zone de texte. textArea.setSize(2000,2000); //Taille de la zone de texte. textArea.setLineWrap(true); //Permet le retour à la ligne automatique. textArea.setWrapStyleWord(true); //Les mots ne seront pas coupés. container.add(textArea); //Defileur return container ; } /*********************/ /** Les Actions **/ /********************/ public void actionPerformed(ActionEvent e) { /***********/ /** menu1 **/ /**********/ /************************/ /** Nouveau ou CTRL+N **/ /***********************/ if(e.getSource() == nouveau) { //On modifie le textArea en supprimant tout le contenu. textArea.setText(""); //On réinitialise l'objet File fileSave. fileSave = new File("c:\\"); //Modifie le titre de la Fenêtre. setTitle("Nouveau - Bloc Note Java"); } /***********************/ /** Ouvrir ou CTRL+O **/ /**********************/ if(e.getSource() == open) { //On créée un nouvel objet JFileChooser. JFileChooser chooser = new JFileChooser(); //On change le répertoire courant de départ, on sera dans le dossier fileSave. chooser.setCurrentDirectory(fileSave); //On fait apparaître le JFileChooser à l'écran. int returnVal = chooser.showOpenDialog(JBlocNote.this); //Si le fichier choisi peut s'ouvrir. if (returnVal == JFileChooser.APPROVE_OPTION) { //On efface le text contenu dans le textArea. textArea.setText("") ; //Le fichier fileSave devient le fichier sélectionner. fileSave = chooser.getSelectedFile(); //c.f sauvegarder. continueSave = true ; //On essaie try { FileReader in = new FileReader(fileSave); //De recopier le fichier dans le textArea int c; while ((c = in.read()) != -1) { String a = (char)c + "" ; textArea.append(a) ; } //On ferme le FileReader in.close(); //On modifier le titre du Bloc Note avec le titre du fichier setTitle(fileSave.getName() + " - Bloc Note Java") ; } //Si ca ne fonctionne pas catch (Exception ex) { //On ferme la fenêtre chooser.setVisible(false) ; } } } /***************************/ /** Sauvegarder ou CTRL+S **/ /***************************/ if(e.getSource() == save) { /*On donne une condition au départ, si le fichier n'a jamais été sauvegardé, un JFileChooser apparait pour demander où sauvgarder sinon il le sauvegarde automatiquement*/ if(continueSave == false) { //c.f. text si dessus continueSave = true ; //On créée un nouvel objet JFileChooser JFileChooser saver = new JFileChooser(); //On change le répertoire courant de départ, on sera dans le dossier fileSave saver.setCurrentDirectory(fileSave) ; //On fait apparaître le JFileChooser à l'écran int returnVal = saver.showSaveDialog(JBlocNote.this); //Si le fichier choisi peut etre sauvé if (returnVal == JFileChooser.APPROVE_OPTION) { //Le fichier fileSave devient le fichier sélectionner fileSave = saver.getSelectedFile(); //On essaie try { FileWriter out = new FileWriter(fileSave); //D'écrire le contenu du textArea String contenu = textArea.getText() ; //A l'aide d'un FileWriter dans le fichier qu'on a choisi out.write(contenu) ; //On ferme l'objet FileWriter out.close(); //On modifie le titre du bloc note en lui donnant le nom du doc setTitle(fileSave.getName() + " - Bloc Note Java") ; } //Si ca ne fonctionne pas catch (Exception ex) { //On cache la fenêtre setVisible(false) ; } } //Si le fichier à été sauvegarder au moins une fois else { //On essaie try { FileWriter out = new FileWriter(fileSave); //D'écrire le contenu du textArea String contenu = textArea.getText() ; //A l'aide d'un FileWriter dans le fichier qu'on a choisi out.write(contenu) ; //On ferme l'objet FileWriter out.close(); //On modifie le titre du bloc note en lui donnant le nom du doc setTitle(fileSave.getName() + " - Bloc Note Java") ; } //Si ca ne fonctionne pas catch (Exception ex) { //On cache la fenêtre saver.setVisible(false) ; } } } } /**********************/ /** Sauvegarder Sous **/ /*********************/ if(e.getSource() == saveAs) { //c.f. text sous sauvegarder continueSave = true ; //On créée un nouvel objet JFileChooser JFileChooser saver = new JFileChooser(); //On change le répertoire courant de départ, on sera dans le dossier fileSave saver.setCurrentDirectory(fileSave) ; //On fait apparaître le JFileChooser à l'écran int returnVal = saver.showSaveDialog(JBlocNote.this); //Si le fichier choisi peut etre sauvé if (returnVal == JFileChooser.APPROVE_OPTION) { //Le fichier fileSave devient le fichier sélectionner fileSave = saver.getSelectedFile(); //On essaie try { FileWriter out = new FileWriter(fileSave); //D'écrire le contenu du textArea String contenu = textArea.getText() ; //A l'aide d'un FileWriter dans le fichier qu'on a choisi out.write(contenu) ; //On ferme l'objet FileWriter out.close(); //On modifie le titre du bloc note en lui donnant le nom du doc setTitle(fileSave.getName() + " - Bloc Note Java") ; } //Si ca ne fonctionne pas catch (Exception ex) { //On cache la fenêtre saver.setVisible(false) ; } } } /************************/ /** Quitter ou CTRL+Q **/ /************************/ if(e.getSource() == quit) { System.exit(0);//On quitte le programme } /***********/ /** menu2 **/ /**********/ /************************/ /** Annuler ou CTRL+Z **/ /***********************/ if(e.getSource() == annuler) { } /**********************************/ /** Tout Selectionner ou CTRL+A **/ /*********************************/ if(e.getSource() == selectAll) { //On sélection tout le text du textArea textArea.selectAll(); } /***********************/ /** Copier ou CTRL+C **/ /**********************/ if(e.getSource() == copy) { //Action Copier textArea.copy(); } /***********************/ /** Couper ou CTRL+X **/ /***********************/ if(e.getSource() == cut) { //Action Couper textArea.cut(); } /**********************/ /** Coller ou CTRL+V **/ /*********************/ if(e.getSource() == paste) { //Action Coller textArea.paste(); } /***********/ /** menu3 **/ /**********/ /***********/ /** Fond **/ /**********/ if(e.getSource() == fondR) { textArea.setBackground(Color.red); } /***********/ /** menu4 **/ /**********/ /**************/ /** A Propos **/ /*************/ if(e.getSource() == about) { String a = "About"; //Titre de la boite de dialogue. JOptionPane.showMessageDialog(null, "Projet developpé par Thomas Fageol (di-g2-16)\nVersion BETA d'un programme developpé en JAVA et qui à la license GNU (cest à dire qu'il est libre et gratuit)\nSi vous avez des questions ecrivez moi à : ptitbond@hotmail.com\n_______________\n\nMerci au site du zero, developpez.com ainsi que Zufferey Matthieu à qui je doit les idée pour la plupart des options du menu.", a, 2);//Affichage d'un message avec description du programme } } }