Java入门之图形界面开发简易记事本
白羽 2018-07-09 来源 :网络 阅读 846 评论 0

摘要:本文将带你了解Java入门之图形界面开发简易记事本,希望本文对大家学JAVA有所帮助。

 


 

写了一个极其简单的记事本。用到了MenuBar,Menu,MenuITem等控件,事件包括ActionListener以及KeyListener。

代码如下:

[java] view plain copy

1. package com.package3;  

2. /* 

3.  * 功能:简易记事本的开发,可以保存文件,打开文件,退出记事本 

4.  * author:ywq 

5.  */  

6. import javax.swing.*;  

7.   

8. import java.awt.*;  

9. import java.awt.event.*;  

10. import java.io.*;  

11.   

12. public class MenuText {  

13.       

14.     //定义组件:  

15.     JFrame f;  

16.     MenuBar mb;    //菜单栏  

17.     Menu mu;       //菜单  

18.     JTextArea jta;  

19.     MenuItem openItem, saveItem, closeItem;   //子菜单  

20.     FileDialog openDia,saveDia;    //弹出的保存和打开框  

21.       

22.     File file;  

23.       

24.       

25.     //构造函数  

26.     public MenuText()  

27.     {  

28.         //调用初始化函数  

29.         init();  

30.     }  

31.     //对组件进行初始化操作  

32.     public void init()  

33.     {  

34.         f=new JFrame("简易记事本");  

35.         mb=new MenuBar();  

36.         mu=new Menu("文件");  

37.         openItem=new MenuItem("打开");  

38.         saveItem=new MenuItem("保存");  

39.         closeItem=new MenuItem("退出");  

40.         jta=new JTextArea();  

41.           

42.         f.add(jta);  

43.           

44.         //添加  

45.         mu.add(openItem);  

46.         mu.add(saveItem);  

47.         mu.add(closeItem);  

48.           

49.         mb.add(mu);  

50.           

51.         f.setMenuBar(mb);  

52.           

53.         openDia=new FileDialog(f, "打开", FileDialog.LOAD);  

54.         saveDia=new FileDialog(f, "保存", FileDialog.SAVE);  

55.           

56.         //设置JFrame属性  

57.         f.setBounds(200, 300, 500, 400);  

58.         f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  

59.         f.setVisible(true);  

60.           

61.         //调用事件函数  

62.         event();  

63.           

64.     }  

65.       

66.     //事件函数,对事件进行处理  

67.     public void event()  

68.     {  

69.         //打开选项  

70.         openItem.addActionListener(new ActionListener()  

71.         {  

72.   

73.             @Override  

74.             public void actionPerformed(ActionEvent e) {  

75.                   

76.             //调用打开文件的方法  

77.                 openFile();  

78.                               

79.             }  

80.               

81.               

82.         });  

83.           

84.         //保存选项  

85.         saveItem.addActionListener(new ActionListener()  

86.         {  

87.   

88.             @Override  

89.             public void actionPerformed(ActionEvent e) {  

90.               

91.             //调用保存文件的方法。  

92.              saveFile();      

93.                   

94.             }  

95.               

96.               

97.         });  

98.         //添加一个文本区域的事件,即按下Ctrl+S可以保存  

99.         //因为键盘监听事件有多种方法,而我们只需要其中的一种,所以可以使用适配器KeyAdapter,  

100.         //从而只需要实现一种方法即可  

101.         jta.addKeyListener(new KeyAdapter()  

102.         {  

103.             //键盘按下方法  

104.             public void keyPressed(KeyEvent e){  

105.       

106.                 if(e.isControlDown() && e.getKeyCode() == KeyEvent.VK_S)  

107.                 {  

108.                     //调用保存文件的方法。  

109.                      saveFile();      

110.                     //JOptionPane.showMessageDialog(null, "对啦");  

111.                 }  

112.             }  

113.         });  

114.           

115.         //关闭选项  

116.         closeItem.addActionListener(new ActionListener()  

117.         {  

118.   

119.             @Override  

120.             public void actionPerformed(ActionEvent e) {  

121.               

122.                 //退出系统  

123.                 System.exit(0);  

124.                   

125.             }  

126.               

127.         });  

128.     }  

129.       

130.     //打开文本的方法  

131.     public void openFile()  

132.     {  

133.         openDia.setVisible(true); //设置其显示出来  

134.           

135.         //获取路径和文件名  

136.         String dirPath=openDia.getDirectory();  

137.         String fileName=openDia.getFile();  

138.           

139.         //防止点击取消报错  

140.         if(dirPath==null || fileName==null)  

141.             return ;  

142.           

143.         jta.setText(""); //将文本区域清空  

144.           

145.         file=new File(dirPath,fileName); //建立文件对象  

146.           

147.         //按照行来读取数据,显示在文本区域  

148.         try  

149.         {  

150.             BufferedReader br = new BufferedReader(new FileReader(file));  

151.   

152.             String line = null;  

153.   

154.             while((line=br.readLine())!=null)  

155.             {  

156.                 jta.append(line+"\r\n");  

157.             }  

158.   

159.             br.close();  

160.         }  

161.         catch (IOException ex)  

162.         {  

163.             throw new RuntimeException("读取失败");  

164.         }  

165.     }  

166.     //保存文本的方法。  

167.     public void saveFile()  

168.     {  

169.         //先判断文件是否存在  

170.         if(file==null)  

171.         {  

172.             saveDia.setVisible(true);  

173.               

174.             String dirPath = saveDia.getDirectory();  

175.             String fileName = saveDia.getFile();  

176.               

177.             //防止点击取消报错  

178.             if(dirPath==null || fileName==null)  

179.                 return ;      

180.             //因为文件不存在。所以需要建立file对象  

181.             file = new File(dirPath,fileName);                

182.         }  

183.           

184.         //将数据写入文件  

185.         try {  

186.             BufferedWriter bw=new BufferedWriter(new FileWriter(file));  

187.               

188.             String info=jta.getText();  //得到文本区域的信息  

189.               

190.             bw.write(info);  //写入操作  

191.             bw.flush();  

192.             bw.close();  

193.               

194.         } catch (IOException e1) {  

195.               

196.             throw new RuntimeException();  

197.         }         

198.           

199.     }  

200.       

201.       

202.     public static void main(String[] args) {  

203.           

204.            //创建对象  

205.         new MenuText();  

206.     }  

207.   

208. }  

     运行结果如图所示:

 Java入门之图形界面开发简易记事本

 

 

本程序实现的功能有:

(1)可以打开某个文件,并且可以编辑。

(2)可以保存编辑后的文件。

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

(4)可以点击closeItem来退出程序。

 

在实现功能3时,对文本区域添加了KeyListener,利用了适配器KeyAdapter来实现监听。但是现在需要的时一种组合监听,即ctrl和S都被按下时才会触发保存操作。

 

关于组合监听,Java API中有提供相应方法。

找到KeyEvent类的直接父类即InputEvent类。如图所示:

 Java入门之图形界面开发简易记事本

 

 

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

 

 Java入门之图形界面开发简易记事本

      做为InputEvent类的子类KeyEvent类的对象e可以直接调用上边方法来进行判断。isControlDown()方法用来判断ctrl键是否被按下。如程序中的if(e.isControlDown() && e.getKeyCode() == KeyEvent.VK_S)便实现了组合判断。

 


以上就介绍了JAVA的相关知识,希望对JAVA有兴趣的朋友有所帮助。了解更多内容,请关注职坐标编程语言JAVA频道!



本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程