English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Développement d'interface graphique Java : carnet de notes simple

在学习了Java事件之后,自己写了一个极其简单的记事本。用到了MenuBar,Menu,MenuITem等控件,事件包括ActionListener以及KeyListener。
代码如下:

package com.package3; 
/* 
 * 功能:简易记事本的开发,可以保存文件,打开文件,退出记事本 
 * author:ywq 
 */ 
import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 
import java.io.*; 
public class MenuText { 
  //定义组件: 
  JFrame f; 
  MenuBar mb;  //菜单栏 
  Menu mu;    //菜单 
  JTextArea jta; 
  MenuItem openItem, saveItem, closeItem;  //子菜单 
  FileDialog openDia, saveDia;  //弹出的保存和打开框 
  File file; 
  //构造函数 
  public MenuText() 
  { 
    //调用初始化函数 
    init(); 
  } 
  //对组件进行初始化操作 
  public void init() 
  { 
    f = new JFrame("简易记事本"); 
    mb = new MenuBar(); 
    mu = new Menu("文件"); 
    openItem = new MenuItem("打开"); 
    saveItem = new MenuItem("保存"); 
    closeItem=new MenuItem("Sortir"); 
    jta=new JTextArea(); 
    f.add(jta); 
    //Ajouter 
    mu.add(openItem); 
    mu.add(saveItem); 
    mu.add(closeItem); 
    mb.add(mu); 
    f.setMenuBar(mb); 
    openDia=new FileDialog(f, "Ouvrir", FileDialog.LOAD); 
    saveDia=new FileDialog(f, "Sauvegarder", FileDialog.SAVE); 
    //Définir les propriétés de JFrame 
    f.setBounds(200, 300, 500, 400); 
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    f.setVisible(true); 
    //Appeler la fonction d'événement 
    event(); 
  } 
  //Fonction d'événement, traiter l'événement 
  public void event() 
  { 
    //Option d'ouverture 
    openItem.addActionListener(new ActionListener()) 
    { 
      @Override 
      public void actionPerformed(ActionEvent e) { 
      //Appeler la méthode d'ouverture des fichiers 
        openFile(); 
      } 
    }); 
    //Option de sauvegarde 
    saveItem.addActionListener(new ActionListener()) 
    { 
      @Override 
      public void actionPerformed(ActionEvent e) { 
      //Appeler la méthode de sauvegarde des fichiers. 
       saveFile();   
      } 
    }); 
    //Ajouter un événement de zone de texte, c'est-à-dire appuyer sur Ctrl+S peut être sauvegardé 
    //Il y a plusieurs méthodes pour les événements de surveillance du clavier, et nous avons besoin d'une seule d'entre elles, donc nous pouvons utiliser l'adaptateur KeyAdapter, 
    //Ainsi, il n'est nécessaire d'implémenter qu'une seule méthode. 
    jta.addKeyListener(new KeyAdapter()) 
    { 
      //Méthode de pression du clavier 
      public void keyPressed(KeyEvent e){ 
        if(e.isControlDown() && e.getKeyCode() == KeyEvent.VK_S) 
        { 
          //Appeler la méthode de sauvegarde des fichiers. 
           saveFile();   
          //JOptionPane.showMessageDialog(null, "C'est vrai"); 
        } 
      } 
    }); 
    //Fermer l'option 
    closeItem.addActionListener(new ActionListener()) 
    { 
      @Override 
      public void actionPerformed(ActionEvent e) { 
        //Sortir du système 
        System.exit(0); 
      } 
    }); 
  } 
  //méthode d'ouverture du texte 
  public void openFile() 
  { 
    openDia.setVisible(true); //le rendre visible 
    //obtenir le chemin et le nom de fichier 
    String dirPath = openDia.getDirectory(); 
    String fileName = openDia.getFile(); 
    //prévenir les erreurs en cas de clic sur 'Annuler' 
    if(dirPath == null || fileName == null) 
      return ; 
    jta.setText(""); //vider la zone de texte 
    file = new File(dirPath, fileName); //créer l'objet fichier 
    //lire les données ligne par ligne, afficher dans la zone de texte 
    try 
    { 
      BufferedReader br = new BufferedReader(new FileReader(file)); 
      String line = null; 
      while((line = br.readLine()) != null) 
      { 
        jta.append(line+"\r\n"); 
      } 
      br.close(); 
    } 
    catch (IOException ex) 
    { 
      lancer une nouvelle RuntimeException("échec de lecture"); 
    } 
  } 
  //méthode de sauvegarde du texte. 
  public void saveFile() 
  { 
    //vérifier d'abord l'existence du fichier 
    if(file == null) 
    { 
      saveDia.setVisible(true); 
      String dirPath = saveDia.getDirectory(); 
      String fileName = saveDia.getFile(); 
      //prévenir les erreurs en cas de clic sur 'Annuler' 
      if(dirPath == null || fileName == null) 
        return ;   
      //parce que le fichier n'existe pas. Par conséquent, il faut créer l'objet file 
      file = new File(dirPath, fileName);        
    } 
    //écrire les données dans le fichier 
    try { 
      BufferedWriter bw = new BufferedWriter(new FileWriter(file)); 
      String info = jta.getText(); //obtenir les informations de la zone de texte 
      bw.write(info); //opération d'écriture 
      bw.flush(); 
      bw.close(); 
    } attraper IOException e1) { 
      lancer une nouvelle RuntimeException(); 
    }     
  } 
  public static void main(String[] args) { 
      //Création d'un objet 
    new MenuText(); 
  } 
} 

Le résultat de l'exécution est illustré dans la figure suivante :


Les fonctionnalités de ce programme incluent :

(1) Vous pouvez ouvrir un fichier et l'éditer

(2) Vous pouvez sauvegarder le fichier après l'édition

(3) Vous pouvez utiliser Ctrl+) Vous pouvez sauvegarder le texte avec S

(4) Vous pouvez cliquer sur closeItem pour quitter le programme.

DansMise en œuvre de la fonction3Lorsque, un KeyListener a été ajouté à la zone de texte, en utilisant l'adaptateur KeyAdapter pour effectuer l'écoute. Mais maintenant, ce dont nous avons besoin est une écoute combinée, c'est-à-dire que Ctrl et S doivent être enfoncés pour déclencher l'opération de sauvegarde.

Concernant l'écoute combinée, l'API Java fournit des méthodes correspondantes.

Trouvez le parent direct de la classe KeyEvent, c'est-à-dire la classe InputEvent. Voici la figure :


Voyons les méthodes de la classe InputEvent, comme suit :


      L'objet e de la classe KeyEvent, qui est une sous-classe de la classe InputEvent, peut appeler la méthode ci-dessus pour effectuer le jugement. La méthode isControlDown() est utilisée pour juger si la touche Ctrl est enfoncée. Par exemple, if(e.isControlDown() && e.getKeyCode() == KeyEvent.VK_S) réalise une jugement combiné.

Voici la totalité du contenu de cet article, j'espère qu'il vous sera utile dans vos études, et j'espère que vous soutiendrez également le tutoriel d'encouragement.

Déclaration : le contenu de cet article est extrait du réseau, propriété du propriétaire du droit d'auteur, contribué et téléversé par les utilisateurs d'Internet de manière spontanée. Ce site Web ne possède pas de propriété, n'a pas été traité par l'éditeur humain et n'assume aucune responsabilité juridique connexe. Si vous trouvez du contenu suspect de violation de droits d'auteur, veuillez envoyer un e-mail à : notice#oldtoolbag.com (veuillez remplacer # par @ lors de l'envoi d'un e-mail pour signaler une violation, et fournir des preuves pertinentes. Une fois vérifié, ce site supprimera immédiatement le contenu suspect de violation de droits d'auteur.)

Vous pourriez aussi aimer