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

Java Graphische Benutzeroberfläche Entwicklung: Ein einfaches Notizbuch

在学习了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("退出"); 
    jta=new JTextArea(); 
    f.add(jta); 
    //添加 
    mu.add(openItem); 
    mu.add(saveItem); 
    mu.add(closeItem); 
    mb.add(mu); 
    f.setMenuBar(mb); 
    openDia=new FileDialog(f, "打开", FileDialog.LOAD); 
    saveDia=new FileDialog(f, "保存", FileDialog.SAVE); 
    //设置JFrame属性 
    f.setBounds(200, 300, 500, 400); 
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    f.setVisible(true); 
    //调用事件函数 
    event(); 
  } 
  //事件函数,对事件进行处理 
  public void event(){ 
  { 
    //打开选项 
    openItem.addActionListener(new ActionListener()) 
    { 
      @Override 
      public void actionPerformed(ActionEvent e) { 
      //调用打开文件的方法 
        openFile(); 
      } 
    }); 
    //保存选项 
    saveItem.addActionListener(new ActionListener()) 
    { 
      @Override 
      public void actionPerformed(ActionEvent e) { 
      //调用保存文件的方法。 
       saveFile();   
      } 
    }); 
    //添加一个文本区域的事件,即按下Ctrl+S可以保存 
    //因为键盘监听事件有多种方法,而我们只需要其中的一种,所以可以使用适配器KeyAdapter, 
    //从而只需要实现一种方法即可 
    jta.addKeyListener(new KeyAdapter()) 
    { 
      //键盘按下方法 
      public void keyPressed(KeyEvent e){ 
        if(e.isControlDown() && e.getKeyCode() == KeyEvent.VK_S) 
        { 
          //调用保存文件的方法。 
           saveFile();   
          //JOptionPane.showMessageDialog(null, "对啦"); 
        } 
      } 
    }); 
    //关闭选项 
    closeItem.addActionListener(new ActionListener()) 
    { 
      @Override 
      public void actionPerformed(ActionEvent e) { 
        //退出系统 
        System.exit(0); 
      } 
    }); 
  } 
  //Methode zum Öffnen von Text. 
  public void openFile() 
  { 
    openDia.setVisible(true); //Zeigen Sie es an 
    //Pfad und Dateinamen erhalten 
    String dirPath = openDia.getDirectory(); 
    String fileName = openDia.getFile(); 
    //Vermeiden Sie Fehler durch Abbrechen des Klicks 
    if(dirPath == null || fileName == null) 
      return ; 
    jta.setText(""); //Leeren Sie den Textbereich 
    file = new File(dirPath, fileName); //Erstellen Sie das Dateiobjekt 
    //Datenzeilen lesen und im Textbereich anzeigen 
    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) 
    { 
      throw new RuntimeException("Lesefehler"); 
    } 
  } 
  //Methode zum Speichern von Text. 
  public void saveFile() 
  { 
    //Überprüfen Sie zunächst, ob die Datei existiert 
    if(file == null) 
    { 
      saveDia.setVisible(true); 
      String dirPath = saveDia.getDirectory(); 
      String fileName = saveDia.getFile(); 
      //Vermeiden Sie Fehler durch Abbrechen des Klicks 
      if(dirPath == null || fileName == null) 
        return ;   
      //Da die Datei nicht existiert, muss das file-Objekt erstellt werden 
      file = new File(dirPath, fileName);        
    } 
    //Daten in die Datei schreiben 
    try { 
      BufferedWriter bw = new BufferedWriter(new FileWriter(file)); 
      String info = jta.getText(); //Informationen des Textbereichs erhalten 
      bw.write(info); //Schreiboperation 
      bw.flush(); 
      bw.close(); 
    } catch (IOException e1) { 
      throw new RuntimeException(); 
    }     
  } 
  public static void main(String[] args) {}} 
      //Objekt erstellen 
    new MenuText(); 
  } 
} 

Das Laufzeitergebnis ist wie im Bild gezeigt:


Diese Anwendung implementiert die folgenden Funktionen:

)1) können Sie eine Datei öffnen und bearbeiten

)2) können Sie die geänderte Datei speichern

)3) können Sie Ctrl+S, um den Text zu speichern

)4) können Sie closeItem zum Beenden des Programms auswählen.

InFunktion implementieren3Wenn, fügte dem Textbereich einen KeyListener hinzu, nutzte den Adapter KeyAdapter, um zu überwachen. Aber jetzt wird eine kombinierte Überwachung benötigt, bei der sowohl Ctrl als auch S gedrückt werden müssen, um die Speicheraktion auszulösen.

Für die kombinierte Überwachung bietet die Java API entsprechende Methoden.

Finden Sie den direkten Vater der Klasse KeyEvent, nämlich die Klasse InputEvent. Wie im Bild gezeigt:


Sehen Sie sich die Methoden der Klasse InputEvent an, wie folgt:


      Das Objekt e der Klasse KeyEvent, die eine Unterklasse der Klasse InputEvent ist, kann die obige Methode direkt aufrufen, um zu urteilen. Die Methode isControlDown() wird verwendet, um zu urteilen, ob die Taste Ctrl gedrückt ist. Wie im Programm implementiert, wird eine kombinierte Urteil durch if(e.isControlDown() && e.getKeyCode() == KeyEvent.VK_S) erreicht.

Das ist der gesamte Inhalt dieses Artikels. Wir hoffen, dass er Ihnen bei Ihrem Lernen hilft und dass Sie die呐喊教程 unterstützen.

Erklärung: Der Inhalt dieses Artikels wurde aus dem Internet entnommen und gehört dem Urheberrecht des jeweiligen Autors. Der Inhalt wurde von Internetnutzern freiwillig beigesteuert und hochgeladen. Diese Website besitzt keine Eigentumsrechte und hat den Inhalt nicht manuell bearbeitet. Sie übernimmt auch keine Haftung für rechtliche Verpflichtungen. Wenn Sie verdächtige urheberrechtliche Inhalte finden, freuen wir uns über eine E-Mail an: notice#oldtoolbag.com (Bitte ersetzen Sie # durch @ beim Senden einer E-Mail zur Meldung von Verstößen und stellen Sie relevante Beweise zur Verfügung. Bei nachgewiesener Rechtsverletzung wird diese Website die beanstandeten Inhalte sofort löschen.)

Vermutlich gefällt dir