摘要:本文将带你了解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. }
运行结果如图所示:
本程序实现的功能有:
(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)便实现了组合判断。
以上就介绍了JAVA的相关知识,希望对JAVA有兴趣的朋友有所帮助。了解更多内容,请关注职坐标编程语言JAVA频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号