Java小试之Note Pad
29 Feb 2012昨天听年级主任将Java,感觉不是一般的爽,花了一晚加今儿一天,把高中毕业买的Java学习笔记翻出来看了一遍,对着后边的例子写了一下。
收货颇丰,爽哉爽哉。
虽然选了.NET,不过每周可以听主任的一节Java,非常荣幸。
[][1]
001 import java.awt.BorderLayout;
002 import java.awt.Container;
003 import java.awt.Font;
004 import java.awt.event.InputEvent;
005 import java.awt.event.KeyEvent;
006 import java.awt.event.WindowAdapter;
007 import java.awt.event.WindowEvent;
008 import java.awt.event.ActionListener;
009 import java.awt.event.KeyAdapter;
010 import java.awt.event.MouseAdapter;
011 import java.awt.event.ActionEvent;
012 import java.awt.event.MouseEvent;
013
014 import javax.swing.BorderFactory;
015 import javax.swing.JFrame;
016 import javax.swing.JLabel;
017 import javax.swing.JMenu;
018 import javax.swing.JMenuBar;
019 import javax.swing.JMenuItem;
020 import javax.swing.JPopupMenu;
021 import javax.swing.JScrollPane;
022 import javax.swing.JTextArea;
023 import javax.swing.KeyStroke;
024 import javax.swing.ScrollPaneConstants;
025 import javax.swing.SwingConstants;
026 import javax.swing.JOptionPane;
027 import javax.swing.JFileChooser;
028
029 import java.io.BufferedReader;
030 import java.io.FileReader;
031 import java.io.IOException;
032 import java.io.*;
033
034 public class JNotePadUI extends JFrame{
035
036 private JMenuItem menuOpen;
037 private JMenuItem menuSave;
038 private JMenuItem menuSaveAs;
039 private JMenuItem menuClose;
040
041 private JMenu editMenu;
042 private JMenuItem menuCut;
043 private JMenuItem menuCopy;
044 private JMenuItem menuPaste;
045
046 private JMenuItem menuAbout;
047 private JTextArea textArea;
048 private JPopupMenu popUpMenu;
049 private JFileChooser fileChooser;
050
051 private JLabel stateBar;
052
053
054 public JNotePadUI(){
055 super(“新建文本文件”);
056 setUpUIComponent();
057 setUpEventListener();
058 setVisible(true);
059 }
060
061 private void setUpUIComponent(){
062 this.setSize(640,480);
063
064 //菜单栏
065 JMenuBar menuBar = new JMenuBar();
066
067 //设置文件菜单
068 JMenu fileMenu = new JMenu(“文件”);
069 menuOpen = new JMenuItem(“打开”);
070 //快捷键设置
071 menuOpen.setAccelerator(
072 KeyStroke.getKeyStroke(
073 KeyEvent.VK_O,InputEvent.CTRL_MASK));
074 menuSave = new JMenuItem(“保存”);
075 menuOpen.setAccelerator(
076 KeyStroke.getKeyStroke(
077 KeyEvent.VK_S,InputEvent.CTRL_MASK));
078 menuSaveAs = new JMenuItem(“另存为”);
079
080 menuClose = new JMenuItem(“关闭”);
081 menuClose.setAccelerator(
082 KeyStroke.getKeyStroke(
083 KeyEvent.VK_O,InputEvent.CTRL_MASK));
084
085 fileMenu.add(menuOpen);
086 fileMenu.addSeparator();//分隔线
087 fileMenu.add(menuSave);
088 fileMenu.add(menuSaveAs);
089 fileMenu.addSeparator();
090 fileMenu.add(menuClose);
091
092 //设置”编辑菜单”
093 editMenu = new JMenu(“编辑”);
094 menuCut = new JMenuItem(“剪切”);
095 menuCut.setAccelerator(
096 KeyStroke.getKeyStroke(KeyEvent.VK_X,
097 InputEvent.CTRL_MASK));
098 menuCopy = new JMenuItem(“复制”);
099 menuCopy.setAccelerator(
100 KeyStroke.getKeyStroke(KeyEvent.VK_C,
101 InputEvent.CTRL_MASK));
102 menuPaste = new JMenuItem(“粘贴”);
103 menuPaste.setAccelerator(
104 KeyStroke.getKeyStroke(KeyEvent.VK_V,
105 InputEvent.CTRL_MASK));
106 editMenu.add(menuCut);
107 editMenu.add(menuCopy);
108 editMenu.add(menuPaste);
109
110 //设置”关于”菜单栏
111 JMenu aboutMenu = new JMenu(“关于”);
112 menuAbout = new JMenuItem(“Lazy Note”);
113 aboutMenu.add(menuAbout);
114
115 menuBar.add(fileMenu);
116 menuBar.add(editMenu);
117 menuBar.add(aboutMenu);
118
119 //设置菜单栏
120 setJMenuBar(menuBar);
121
122 //文字编辑区域
123 textArea = new JTextArea();
124 textArea.setFont(new Font(“宋体”,Font.PLAIN,16));
125 textArea.setLineWrap(true);
126 JScrollPane panel = new JScrollPane(textArea,
127 ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
128 ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
129
130 Container contentPane = getContentPane();
131 contentPane.add(panel,BorderLayout.CENTER);
132
133 //状态栏
134 stateBar = new JLabel(“未修改”);
135 stateBar.setHorizontalAlignment(SwingConstants.LEFT);
136 stateBar.setBorder(
137 BorderFactory.createEtchedBorder());
138 contentPane.add(stateBar,BorderLayout.SOUTH);
139
140 popUpMenu = editMenu.getPopupMenu();
141
142 fileChooser = new JFileChooser();
143 }
144
145 private void setUpEventListener(){
146 //单击窗口关闭按钮事件处理
147 addWindowListener(
148 new WindowAdapter(){
149
150 public void windowClosing(WindowEvent e){
151 closeFile();
152 }
153 }
154 );
155
156 //菜单——打开
157 menuOpen.addActionListener(
158 new ActionListener(){
159 public void actionPerformed(ActionEvent e){
160 openFile();
161 }
162 }
163 );
164
165 //菜单——保存
166 menuSave.addActionListener(
167 new ActionListener(){
168 public void actionPerformed(ActionEvent e){
169 saveFile();
170 }
171 }
172 );
173
174 //菜单——另存为
175 menuSaveAs.addActionListener(
176 new ActionListener(){
177 public void actionPerformed(ActionEvent e){
178 saveFileAs();
179 }
180 }
181 );
182
183 //菜单——关闭文件
184 menuClose.addActionListener(
185 new ActionListener(){
186 public void actionPerformed(ActionEvent e){
187 closeFile();
188 }
189 }
190 );
191
192 //菜单——剪切
193 menuCut.addActionListener(
194 new ActionListener(){
195 public void actionPerformed(ActionEvent e){
196 cut();
197 }
198 }
199 );
200
201 //菜单——复制
202 menuCopy.addActionListener(
203 new ActionListener(){
204 public void actionPerformed(ActionEvent e){
205 copy();
206 }
207 }
208 );
209
210 //菜单——粘贴
211 menuPaste.addActionListener(
212 new ActionListener(){
213 public void actionPerformed(ActionEvent e){
214 paste();
215 }
216 }
217 );
218
219 //菜单——关于
220 menuAbout.addActionListener(
221 new ActionListener(){
222 public void actionPerformed(ActionEvent e){
223 //显示对话框
224 JOptionPane.showOptionDialog(null,
225 ” Lazy Note \n”+
226 “http://lazynight.me/”,
227 “关于 Lazy Note”,
228 JOptionPane.DEFAULT_OPTION,
229 JOptionPane.INFORMATION_MESSAGE,
230 null,null,null);
231 }
232 }
233 );
234
235 //编辑区键盘事件
236 textArea.addKeyListener(
237 new KeyAdapter(){
238 public void keyTyped(KeyEvent e){
239 processTextArea();
240 }
241 }
242 );
243
244 //编辑区鼠标事件
245 textArea.addMouseListener(
246 new MouseAdapter(){
247 public void mouseReleased(MouseEvent e){
248 if(e.getButton() == MouseEvent.BUTTON3)
249 popUpMenu.show(editMenu,e.getX(),e.getY());
250 }
251 public void mouseClicker(MouseEvent e){
252 if(e.getButton() == MouseEvent.BUTTON1)
253 popUpMenu.setVisible(false);
254 }
255 }
256 );
257
258 }
259
260
261 private void openFile(){
262 if(isCurrentFileSaved()){//文件是否为保存状态
263 open();//打开
264 }
265 else{
266 //显示对话框
267 int option = JOptionPane.showConfirmDialog(
268 null,“文件已修改,是否保存”,
269 “保存文件?”,JOptionPane.YES_NO_OPTION,
270 JOptionPane.WARNING_MESSAGE,null);
271 switch(option){
272 //确认文件保存
273 case JOptionPane.YES_OPTION:
274 saveFile();//保存文件
275 break;
276 //放弃文件保存
277 case JOptionPane.NO_OPTION:
278 open();
279 break;
280
281 }
282 }
283 }
284 private void open(){
285 //fileChooser是JFileChoose的实例
286 //显示文件选取的对话框
287 int option = fileChooser.showDialog(null,null);
288
289 //用户单击"确认"按钮
290 if(option == JFileChooser.APPROVE_OPTION){
291 try{
292 //打开选取的文件
293 BufferedReader buf = new BufferedReader(
294 new BufferedReader(
295 new FileReader(
296 fileChooser.getSelectedFile())));
297
298 //设置文件标题
299 setTitle(fileChooser.getSelectedFile().toString());
300 //删除前一次文件
301 textArea.setText(“”);
302 //设置状态栏
303 stateBar.setText(“未修改”);
304 //取得系统相依的换行字符
305 String lineSeparator = System.getProperty(“line.separator”);
306 //读取文件并附加至文字编辑区
307 String text;
308 while((text = buf.readLine()) != null){
309 textArea.append(text);
310 textArea.append(lineSeparator);
311 }
312 buf.close();
313
314 }
315 catch(IOException e){
316 JOptionPane.showMessageDialog(null,e.toString(),
317 “开启文件失败”,JOptionPane.ERROR_MESSAGE);
318 }
319 }
320 }
321
322 private boolean isCurrentFileSaved(){
323 if(stateBar.getText().equals(“已修改”)){
324 return false;
325 }
326 else{
327 return true;
328 }
329 }
330 private void saveFile(){
331 //从标题栏取得文件名称
332 File file = new File(getTitle());
333
334 //若指定的文件不存在
335 if(!file.exists()){
336 //执行另存为
337 saveFileAs();
338 }
339 else{
340 try{
341 //打开指定的文件
342 BufferedWriter buf = new BufferedWriter(
343 new FileWriter(file));
344 //将文字编辑区的文字写入文件
345 buf.write(textArea.getText());
346 buf.close();
347 //设置状态栏为未修改
348 stateBar.setText(“未修改”);
349 }
350 catch(IOException e){
351 JOptionPane.showMessageDialog(null,e.toString(),
352 “写入文件失败”,JOptionPane.ERROR_MESSAGE);
353 }
354 }
355 }
356
357 private void saveFileAs(){
358 //显示文件对话框
359 int option = fileChooser.showDialog(null,null);
360
361 //如果确认选取文件
362 if(option == JFileChooser.APPROVE_OPTION){
363 //取得选择的文件
364 File file = fileChooser.getSelectedFile();
365
366 //在标题栏上设置文件名称
367 setTitle(file.toString());
368
369 try{
370 //建立文件
371 file.</p>
002 import java.awt.Container;
003 import java.awt.Font;
004 import java.awt.event.InputEvent;
005 import java.awt.event.KeyEvent;
006 import java.awt.event.WindowAdapter;
007 import java.awt.event.WindowEvent;
008 import java.awt.event.ActionListener;
009 import java.awt.event.KeyAdapter;
010 import java.awt.event.MouseAdapter;
011 import java.awt.event.ActionEvent;
012 import java.awt.event.MouseEvent;
013
014 import javax.swing.BorderFactory;
015 import javax.swing.JFrame;
016 import javax.swing.JLabel;
017 import javax.swing.JMenu;
018 import javax.swing.JMenuBar;
019 import javax.swing.JMenuItem;
020 import javax.swing.JPopupMenu;
021 import javax.swing.JScrollPane;
022 import javax.swing.JTextArea;
023 import javax.swing.KeyStroke;
024 import javax.swing.ScrollPaneConstants;
025 import javax.swing.SwingConstants;
026 import javax.swing.JOptionPane;
027 import javax.swing.JFileChooser;
028
029 import java.io.BufferedReader;
030 import java.io.FileReader;
031 import java.io.IOException;
032 import java.io.*;
033
034 public class JNotePadUI extends JFrame{
035
036 private JMenuItem menuOpen;
037 private JMenuItem menuSave;
038 private JMenuItem menuSaveAs;
039 private JMenuItem menuClose;
040
041 private JMenu editMenu;
042 private JMenuItem menuCut;
043 private JMenuItem menuCopy;
044 private JMenuItem menuPaste;
045
046 private JMenuItem menuAbout;
047 private JTextArea textArea;
048 private JPopupMenu popUpMenu;
049 private JFileChooser fileChooser;
050
051 private JLabel stateBar;
052
053
054 public JNotePadUI(){
055 super(“新建文本文件”);
056 setUpUIComponent();
057 setUpEventListener();
058 setVisible(true);
059 }
060
061 private void setUpUIComponent(){
062 this.setSize(640,480);
063
064 //菜单栏
065 JMenuBar menuBar = new JMenuBar();
066
067 //设置文件菜单
068 JMenu fileMenu = new JMenu(“文件”);
069 menuOpen = new JMenuItem(“打开”);
070 //快捷键设置
071 menuOpen.setAccelerator(
072 KeyStroke.getKeyStroke(
073 KeyEvent.VK_O,InputEvent.CTRL_MASK));
074 menuSave = new JMenuItem(“保存”);
075 menuOpen.setAccelerator(
076 KeyStroke.getKeyStroke(
077 KeyEvent.VK_S,InputEvent.CTRL_MASK));
078 menuSaveAs = new JMenuItem(“另存为”);
079
080 menuClose = new JMenuItem(“关闭”);
081 menuClose.setAccelerator(
082 KeyStroke.getKeyStroke(
083 KeyEvent.VK_O,InputEvent.CTRL_MASK));
084
085 fileMenu.add(menuOpen);
086 fileMenu.addSeparator();//分隔线
087 fileMenu.add(menuSave);
088 fileMenu.add(menuSaveAs);
089 fileMenu.addSeparator();
090 fileMenu.add(menuClose);
091
092 //设置”编辑菜单”
093 editMenu = new JMenu(“编辑”);
094 menuCut = new JMenuItem(“剪切”);
095 menuCut.setAccelerator(
096 KeyStroke.getKeyStroke(KeyEvent.VK_X,
097 InputEvent.CTRL_MASK));
098 menuCopy = new JMenuItem(“复制”);
099 menuCopy.setAccelerator(
100 KeyStroke.getKeyStroke(KeyEvent.VK_C,
101 InputEvent.CTRL_MASK));
102 menuPaste = new JMenuItem(“粘贴”);
103 menuPaste.setAccelerator(
104 KeyStroke.getKeyStroke(KeyEvent.VK_V,
105 InputEvent.CTRL_MASK));
106 editMenu.add(menuCut);
107 editMenu.add(menuCopy);
108 editMenu.add(menuPaste);
109
110 //设置”关于”菜单栏
111 JMenu aboutMenu = new JMenu(“关于”);
112 menuAbout = new JMenuItem(“Lazy Note”);
113 aboutMenu.add(menuAbout);
114
115 menuBar.add(fileMenu);
116 menuBar.add(editMenu);
117 menuBar.add(aboutMenu);
118
119 //设置菜单栏
120 setJMenuBar(menuBar);
121
122 //文字编辑区域
123 textArea = new JTextArea();
124 textArea.setFont(new Font(“宋体”,Font.PLAIN,16));
125 textArea.setLineWrap(true);
126 JScrollPane panel = new JScrollPane(textArea,
127 ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
128 ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
129
130 Container contentPane = getContentPane();
131 contentPane.add(panel,BorderLayout.CENTER);
132
133 //状态栏
134 stateBar = new JLabel(“未修改”);
135 stateBar.setHorizontalAlignment(SwingConstants.LEFT);
136 stateBar.setBorder(
137 BorderFactory.createEtchedBorder());
138 contentPane.add(stateBar,BorderLayout.SOUTH);
139
140 popUpMenu = editMenu.getPopupMenu();
141
142 fileChooser = new JFileChooser();
143 }
144
145 private void setUpEventListener(){
146 //单击窗口关闭按钮事件处理
147 addWindowListener(
148 new WindowAdapter(){
149
150 public void windowClosing(WindowEvent e){
151 closeFile();
152 }
153 }
154 );
155
156 //菜单——打开
157 menuOpen.addActionListener(
158 new ActionListener(){
159 public void actionPerformed(ActionEvent e){
160 openFile();
161 }
162 }
163 );
164
165 //菜单——保存
166 menuSave.addActionListener(
167 new ActionListener(){
168 public void actionPerformed(ActionEvent e){
169 saveFile();
170 }
171 }
172 );
173
174 //菜单——另存为
175 menuSaveAs.addActionListener(
176 new ActionListener(){
177 public void actionPerformed(ActionEvent e){
178 saveFileAs();
179 }
180 }
181 );
182
183 //菜单——关闭文件
184 menuClose.addActionListener(
185 new ActionListener(){
186 public void actionPerformed(ActionEvent e){
187 closeFile();
188 }
189 }
190 );
191
192 //菜单——剪切
193 menuCut.addActionListener(
194 new ActionListener(){
195 public void actionPerformed(ActionEvent e){
196 cut();
197 }
198 }
199 );
200
201 //菜单——复制
202 menuCopy.addActionListener(
203 new ActionListener(){
204 public void actionPerformed(ActionEvent e){
205 copy();
206 }
207 }
208 );
209
210 //菜单——粘贴
211 menuPaste.addActionListener(
212 new ActionListener(){
213 public void actionPerformed(ActionEvent e){
214 paste();
215 }
216 }
217 );
218
219 //菜单——关于
220 menuAbout.addActionListener(
221 new ActionListener(){
222 public void actionPerformed(ActionEvent e){
223 //显示对话框
224 JOptionPane.showOptionDialog(null,
225 ” Lazy Note \n”+
226 “http://lazynight.me/”,
227 “关于 Lazy Note”,
228 JOptionPane.DEFAULT_OPTION,
229 JOptionPane.INFORMATION_MESSAGE,
230 null,null,null);
231 }
232 }
233 );
234
235 //编辑区键盘事件
236 textArea.addKeyListener(
237 new KeyAdapter(){
238 public void keyTyped(KeyEvent e){
239 processTextArea();
240 }
241 }
242 );
243
244 //编辑区鼠标事件
245 textArea.addMouseListener(
246 new MouseAdapter(){
247 public void mouseReleased(MouseEvent e){
248 if(e.getButton() == MouseEvent.BUTTON3)
249 popUpMenu.show(editMenu,e.getX(),e.getY());
250 }
251 public void mouseClicker(MouseEvent e){
252 if(e.getButton() == MouseEvent.BUTTON1)
253 popUpMenu.setVisible(false);
254 }
255 }
256 );
257
258 }
259
260
261 private void openFile(){
262 if(isCurrentFileSaved()){//文件是否为保存状态
263 open();//打开
264 }
265 else{
266 //显示对话框
267 int option = JOptionPane.showConfirmDialog(
268 null,“文件已修改,是否保存”,
269 “保存文件?”,JOptionPane.YES_NO_OPTION,
270 JOptionPane.WARNING_MESSAGE,null);
271 switch(option){
272 //确认文件保存
273 case JOptionPane.YES_OPTION:
274 saveFile();//保存文件
275 break;
276 //放弃文件保存
277 case JOptionPane.NO_OPTION:
278 open();
279 break;
280
281 }
282 }
283 }
284 private void open(){
285 //fileChooser是JFileChoose的实例
286 //显示文件选取的对话框
287 int option = fileChooser.showDialog(null,null);
288
289 //用户单击"确认"按钮
290 if(option == JFileChooser.APPROVE_OPTION){
291 try{
292 //打开选取的文件
293 BufferedReader buf = new BufferedReader(
294 new BufferedReader(
295 new FileReader(
296 fileChooser.getSelectedFile())));
297
298 //设置文件标题
299 setTitle(fileChooser.getSelectedFile().toString());
300 //删除前一次文件
301 textArea.setText(“”);
302 //设置状态栏
303 stateBar.setText(“未修改”);
304 //取得系统相依的换行字符
305 String lineSeparator = System.getProperty(“line.separator”);
306 //读取文件并附加至文字编辑区
307 String text;
308 while((text = buf.readLine()) != null){
309 textArea.append(text);
310 textArea.append(lineSeparator);
311 }
312 buf.close();
313
314 }
315 catch(IOException e){
316 JOptionPane.showMessageDialog(null,e.toString(),
317 “开启文件失败”,JOptionPane.ERROR_MESSAGE);
318 }
319 }
320 }
321
322 private boolean isCurrentFileSaved(){
323 if(stateBar.getText().equals(“已修改”)){
324 return false;
325 }
326 else{
327 return true;
328 }
329 }
330 private void saveFile(){
331 //从标题栏取得文件名称
332 File file = new File(getTitle());
333
334 //若指定的文件不存在
335 if(!file.exists()){
336 //执行另存为
337 saveFileAs();
338 }
339 else{
340 try{
341 //打开指定的文件
342 BufferedWriter buf = new BufferedWriter(
343 new FileWriter(file));
344 //将文字编辑区的文字写入文件
345 buf.write(textArea.getText());
346 buf.close();
347 //设置状态栏为未修改
348 stateBar.setText(“未修改”);
349 }
350 catch(IOException e){
351 JOptionPane.showMessageDialog(null,e.toString(),
352 “写入文件失败”,JOptionPane.ERROR_MESSAGE);
353 }
354 }
355 }
356
357 private void saveFileAs(){
358 //显示文件对话框
359 int option = fileChooser.showDialog(null,null);
360
361 //如果确认选取文件
362 if(option == JFileChooser.APPROVE_OPTION){
363 //取得选择的文件
364 File file = fileChooser.getSelectedFile();
365
366 //在标题栏上设置文件名称
367 setTitle(file.toString());
368
369 try{
370 //建立文件
371 file.</p>
转载请注明:于哲的博客 » Java小试之Note Pad
[1]: http://lazynight.me/wp-content/uploads/2012/02/java.gif