Java圖形介面開發之簡易記事本_java

來源:互聯網
上載者:User

在學習了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);                }            });   }      //開啟文本的方法   public void openFile()   {     openDia.setVisible(true); //設定其顯示出來          //擷取路徑和檔案名稱     String dirPath=openDia.getDirectory();     String fileName=openDia.getFile();          //防止點擊取消報錯     if(dirPath==null || fileName==null)       return ;          jta.setText(""); //將文本地區清空          file=new File(dirPath,fileName); //建立檔案對象          //按照行來讀取資料,顯示在文本地區     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("讀取失敗");     }   }   //儲存文本的方法。   public void saveFile()   {     //先判斷檔案是否存在     if(file==null)     {       saveDia.setVisible(true);              String dirPath = saveDia.getDirectory();       String fileName = saveDia.getFile();              //防止點擊取消報錯       if(dirPath==null || fileName==null)         return ;         //因為檔案不存在。所以需要建立file對象       file = new File(dirPath,fileName);            }          //將資料寫入檔案     try {       BufferedWriter bw=new BufferedWriter(new FileWriter(file));              String info=jta.getText(); //得到文本地區的資訊              bw.write(info); //寫入操作       bw.flush();       bw.close();            } catch (IOException e1) {              throw new RuntimeException();     }            }         public static void main(String[] args) {            //建立對象     new MenuText();   }  } 

運行結果如圖所示:


本程式實現的功能有:

(1)可以開啟某個檔案,並且可以編輯。

(2)可以儲存編輯後的檔案。

(3)可以使用Ctrl+S來儲存文本

(4)可以點擊closeItem來退出程式。

實現功能3時,對文本地區添加了KeyListener,利用了適配器KeyAdapter來實現監聽。但是現在需要的時一種組合監聽,即ctrl和S都被按下時才會觸發儲存操作。

關於組合監聽,Java API中有提供相應方法。

找到KeyEvent類的直接父類即InputEvent類。如圖所示:


查看InputEvent類中的方法,如下所示:


      做為InputEvent類的子類KeyEvent類的對象e可以直接調用上邊方法來進行判斷。isControlDown()方法用來判斷ctrl鍵是否被按下。如程式中的if(e.isControlDown() && e.getKeyCode() == KeyEvent.VK_S)便實現了組合判斷。

以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支援雲棲社區。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.