最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java圖形界面開發(fā)之簡易記事本

 更新時(shí)間:2016年10月28日 09:42:26   作者:溫柔狠角色  
這篇文章主要為大家詳細(xì)介紹了Java圖形界面開發(fā)之簡易記事本的制作方法,,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

在學(xué)習(xí)了Java事件之后,自己寫了一個(gè)極其簡單的記事本。用到了MenuBar,Menu,MenuITem等控件,事件包括ActionListener以及KeyListener。
代碼如下:

package com.package3; 
/* 
 * 功能:簡易記事本的開發(fā),可以保存文件,打開文件,退出記事本 
 * 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; 
   
   
  //構(gòu)造函數(shù) 
  public MenuText() 
  { 
    //調(diào)用初始化函數(shù) 
    init(); 
  } 
  //對(duì)組件進(jìn)行初始化操作 
  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); 
     
    //設(shè)置JFrame屬性 
    f.setBounds(200, 300, 500, 400); 
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    f.setVisible(true); 
     
    //調(diào)用事件函數(shù) 
    event(); 
     
  } 
   
  //事件函數(shù),對(duì)事件進(jìn)行處理 
  public void event() 
  { 
    //打開選項(xiàng) 
    openItem.addActionListener(new ActionListener() 
    { 
 
      @Override 
      public void actionPerformed(ActionEvent e) { 
         
      //調(diào)用打開文件的方法 
        openFile(); 
               
      } 
       
       
    }); 
     
    //保存選項(xiàng) 
    saveItem.addActionListener(new ActionListener() 
    { 
 
      @Override 
      public void actionPerformed(ActionEvent e) { 
       
      //調(diào)用保存文件的方法。 
       saveFile();   
         
      } 
       
       
    }); 
    //添加一個(gè)文本區(qū)域的事件,即按下Ctrl+S可以保存 
    //因?yàn)殒I盤監(jiān)聽事件有多種方法,而我們只需要其中的一種,所以可以使用適配器KeyAdapter, 
    //從而只需要實(shí)現(xiàn)一種方法即可 
    jta.addKeyListener(new KeyAdapter() 
    { 
      //鍵盤按下方法 
      public void keyPressed(KeyEvent e){ 
   
        if(e.isControlDown() && e.getKeyCode() == KeyEvent.VK_S) 
        { 
          //調(diào)用保存文件的方法。 
           saveFile();   
          //JOptionPane.showMessageDialog(null, "對(duì)啦"); 
        } 
      } 
    }); 
     
    //關(guān)閉選項(xiàng) 
    closeItem.addActionListener(new ActionListener() 
    { 
 
      @Override 
      public void actionPerformed(ActionEvent e) { 
       
        //退出系統(tǒng) 
        System.exit(0); 
         
      } 
       
    }); 
  } 
   
  //打開文本的方法 
  public void openFile() 
  { 
    openDia.setVisible(true); //設(shè)置其顯示出來 
     
    //獲取路徑和文件名 
    String dirPath=openDia.getDirectory(); 
    String fileName=openDia.getFile(); 
     
    //防止點(diǎn)擊取消報(bào)錯(cuò) 
    if(dirPath==null || fileName==null) 
      return ; 
     
    jta.setText(""); //將文本區(qū)域清空 
     
    file=new File(dirPath,fileName); //建立文件對(duì)象 
     
    //按照行來讀取數(shù)據(jù),顯示在文本區(qū)域 
    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(); 
       
      //防止點(diǎn)擊取消報(bào)錯(cuò) 
      if(dirPath==null || fileName==null) 
        return ;   
      //因?yàn)槲募淮嬖凇K孕枰ile對(duì)象 
      file = new File(dirPath,fileName);        
    } 
     
    //將數(shù)據(jù)寫入文件 
    try { 
      BufferedWriter bw=new BufferedWriter(new FileWriter(file)); 
       
      String info=jta.getText(); //得到文本區(qū)域的信息 
       
      bw.write(info); //寫入操作 
      bw.flush(); 
      bw.close(); 
       
    } catch (IOException e1) { 
       
      throw new RuntimeException(); 
    }     
     
  } 
   
   
  public static void main(String[] args) { 
     
      //創(chuàng)建對(duì)象 
    new MenuText(); 
  } 
 
} 

運(yùn)行結(jié)果如圖所示:


本程序?qū)崿F(xiàn)的功能有:

(1)可以打開某個(gè)文件,并且可以編輯。

(2)可以保存編輯后的文件。

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

(4)可以點(diǎn)擊closeItem來退出程序。

實(shí)現(xiàn)功能3時(shí),對(duì)文本區(qū)域添加了KeyListener,利用了適配器KeyAdapter來實(shí)現(xiàn)監(jiān)聽。但是現(xiàn)在需要的時(shí)一種組合監(jiān)聽,即ctrl和S都被按下時(shí)才會(huì)觸發(fā)保存操作。

關(guān)于組合監(jiān)聽,Java API中有提供相應(yīng)方法。

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


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


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

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • java 中的亂碼問題匯總及解決方案

    java 中的亂碼問題匯總及解決方案

    這篇文章主要介紹了java 中的亂碼問題匯總相關(guān)資料,并附解決方案,出現(xiàn)亂碼問題有編碼與解碼,字節(jié)流與字符流出現(xiàn)亂碼,等其他情況,需要的朋友可以參考下
    2016-11-11
  • Java switch支持的數(shù)據(jù)類型詳解

    Java switch支持的數(shù)據(jù)類型詳解

    這篇文章主要介紹了Java switch支持的數(shù)據(jù)類型詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Java設(shè)計(jì)模式之組合模式的示例詳解

    Java設(shè)計(jì)模式之組合模式的示例詳解

    組合模式,又叫部分整體模式,它創(chuàng)建了對(duì)象組的數(shù)據(jù)結(jié)構(gòu)組合模式使得用戶對(duì)單個(gè)對(duì)象和組合對(duì)象的訪問具有一致性。本文將通過示例為大家詳細(xì)介紹一下組合模式,需要的可以參考一下
    2022-03-03
  • JAVA Swing實(shí)現(xiàn)窗口添加課程信息過程解析

    JAVA Swing實(shí)現(xiàn)窗口添加課程信息過程解析

    這篇文章主要介紹了JAVA Swing實(shí)現(xiàn)窗口添加課程信息過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • SSM項(xiàng)目中配置LOG4J日志的方法

    SSM項(xiàng)目中配置LOG4J日志的方法

    本篇文章主要介紹了SSM項(xiàng)目中配置LOG4J日志的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • java自定義枚舉轉(zhuǎn)換器示例

    java自定義枚舉轉(zhuǎn)換器示例

    這篇文章主要介紹了java自定義枚舉轉(zhuǎn)換器示例,需要的朋友可以參考下
    2014-05-05
  • springboot2.0?@Slf4j?log?彩色日志配置輸出到文件

    springboot2.0?@Slf4j?log?彩色日志配置輸出到文件

    這篇文章主要介紹了springboot2.0 @Slf4j log日志配置輸出到文件(彩色日志),解決方式是使用了springboot原生自帶的一個(gè)log框架,結(jié)合實(shí)例代碼給大家講解的非常詳細(xì),需要的朋友可以參考下
    2023-08-08
  • Java練手小項(xiàng)目實(shí)現(xiàn)一個(gè)項(xiàng)目管理系統(tǒng)

    Java練手小項(xiàng)目實(shí)現(xiàn)一個(gè)項(xiàng)目管理系統(tǒng)

    讀萬卷書不如行萬里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Java實(shí)現(xiàn)一個(gè)項(xiàng)目管理系統(tǒng),大家可以在過程中查缺補(bǔ)漏,提升水平
    2021-10-10
  • J2ME編程中的幾個(gè)重要概念介紹

    J2ME編程中的幾個(gè)重要概念介紹

    本文介紹的是J2ME編程應(yīng)用平臺(tái)中的幾個(gè)重要概念,希望對(duì)你有幫助,一起來看。
    2015-09-09
  • MyBatis-Plus分頁插件不生效的解決方法

    MyBatis-Plus分頁插件不生效的解決方法

    這篇文章主要介紹了MyBatis-Plus分頁插件不生效的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09

最新評(píng)論

定安县| 含山县| 阜宁县| 乌恰县| 胶南市| 调兵山市| 卢龙县| 凭祥市| 屯留县| 亳州市| 辰溪县| 阿拉尔市| 云安县| 乾安县| 巢湖市| 普安县| 长白| 磐石市| 永嘉县| 师宗县| 托里县| 尉犁县| 西安市| 昌都县| 永兴县| 岳阳县| 新建县| 衢州市| 百色市| 舞钢市| 泸州市| 丹巴县| 界首市| 汽车| 宝清县| 南投市| 荥经县| 将乐县| 从化市| 珲春市| 樟树市|