吉吉于

Java小试之Note Pad

昨天听年级主任将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>

转载请注明:于哲的博客 » Java小试之Note Pad

[1]: http://lazynight.me/wp-content/uploads/2012/02/java.gif