返回列表 發帖
  1. import java.awt.Font;

  2. import javax.swing.JFileChooser;
  3. import javax.swing.JFrame;
  4. import javax.swing.JMenu;
  5. import javax.swing.JMenuBar;
  6. import javax.swing.JMenuItem;
  7. import javax.swing.JOptionPane;
  8. import javax.swing.JScrollPane;
  9. import javax.swing.JTextArea;
  10. import javax.swing.ImageIcon;
  11. import javax.swing.UIManager;
  12. import javax.swing.border.BevelBorder;
  13. import javax.swing.filechooser.FileNameExtensionFilter;

  14. import java.awt.event.ActionListener;
  15. import java.awt.event.ActionEvent;
  16. import java.io.BufferedReader;
  17. import java.io.BufferedWriter;
  18. import java.io.File;
  19. import java.io.FileReader;
  20. import java.io.FileWriter;

  21. public class Ch01 implements ActionListener{
  22.         
  23.     String title="My Editor";
  24.     JFrame fm;
  25.     JScrollPane sp;
  26.     JTextArea ta;
  27.     ImageIcon ic,ic_cut,ic_exit,ic_new,ic_open,ic_about,ic_developer,ic_paste,ic_save,ic_copy,ic_selectall;
  28.     JMenuBar mb;
  29.     JMenu mn_file,mn_edit,mn_help;
  30.     JMenuItem mi_new,mi_open,mi_save,mi_exit,mi_copy,mi_paste,mi_cut,mi_selectall,mi_about;
  31.     JFileChooser fc;
  32.     FileNameExtensionFilter filter1,filter2;
  33.         
  34.     void initialize(){
  35.         try {
  36.                 UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
  37.         } catch (Exception e){}
  38.         
  39.         filter1=new FileNameExtensionFilter("純文字文件","txt");
  40.       
  41.         
  42.         fc=new JFileChooser();
  43.         fc.addChoosableFileFilter(filter1);
  44.         fc.setFileFilter(filter1);   
  45.         
  46.         ic=new ImageIcon(Ch01.class.getResource("pic/editor.png"));
  47.         ic_cut=new ImageIcon(Ch01.class.getResource("pic/cut.png"));
  48.         ic_exit=new ImageIcon(Ch01.class.getResource("pic/exit.png"));
  49.         ic_new=new ImageIcon(Ch01.class.getResource("pic/new.png"));
  50.         ic_open=new ImageIcon(Ch01.class.getResource("pic/open.png"));
  51.         ic_paste=new ImageIcon(Ch01.class.getResource("pic/paste.png"));
  52.         ic_save=new ImageIcon(Ch01.class.getResource("pic/save.png"));
  53.         ic_copy=new ImageIcon(Ch01.class.getResource("pic/copy.png"));
  54.         ic_selectall=new ImageIcon(Ch01.class.getResource("pic/selectall.png"));
  55.         ic_about=new ImageIcon(Ch01.class.getResource("pic/about.png"));
  56.         ic_developer=new ImageIcon(Ch01.class.getResource("pic/developer.png"));
  57.         
  58.         mi_new=new JMenuItem("開新檔案",ic_new);
  59.         mi_new.addActionListener(this);
  60.         mi_open=new JMenuItem("開啟舊檔",ic_open);
  61.         mi_open.addActionListener(this);
  62.         mi_save=new JMenuItem("儲存檔案",ic_save);
  63.         mi_save.addActionListener(this);
  64.         mi_exit=new JMenuItem("結束",ic_exit);
  65.         mi_exit.addActionListener(this);
  66.         mi_copy=new JMenuItem("複製",ic_copy);
  67.         mi_copy.addActionListener(this);
  68.         mi_paste=new JMenuItem("貼上",ic_paste);
  69.         mi_paste.addActionListener(this);
  70.         mi_cut=new JMenuItem("剪下",ic_cut);
  71.         mi_cut.addActionListener(this);
  72.         mi_selectall=new JMenuItem("全選",ic_selectall);
  73.         mi_selectall.addActionListener(this);
  74.         mi_about=new JMenuItem("關於 My Editor",ic_about);
  75.         mi_about.addActionListener(this);
  76.         
  77.         mn_help=new JMenu(" 關於(H) ");
  78.         mn_help.setMnemonic('H');
  79.         mn_help.add(mi_about);
  80.         
  81.         mn_file=new JMenu(" 檔案(F) ");
  82.         mn_file.setMnemonic('F');     
  83.         mn_file.add(mi_new);
  84.         mn_file.add(mi_open);
  85.         mn_file.add(mi_save);
  86.         mn_file.addSeparator();   
  87.         mn_file.add(mi_exit);
  88.         
  89.         mn_edit=new JMenu(" 編輯(E) ");
  90.         mn_edit.setMnemonic('E');     
  91.         mn_edit.add(mi_copy);
  92.         mn_edit.add(mi_paste);
  93.         mn_edit.add(mi_cut);
  94.         mn_edit.addSeparator();
  95.         mn_edit.add(mi_selectall);
  96.         
  97.         mb=new JMenuBar();
  98.         mb.setBorder(new BevelBorder(BevelBorder.RAISED));
  99.         mb.add(mn_file);
  100.         mb.add(mn_edit);
  101.         mb.add(mn_help);
  102.         
  103.         ta=new JTextArea();
  104.         ta.setFont(new Font("新細明體", Font.PLAIN, 18));
  105.         ta.setLineWrap(true);     
  106.         
  107.         sp=new JScrollPane(ta);
  108.         
  109.         fm=new JFrame(title+" - 未命名");
  110.         fm.setBounds(100, 100, 500, 350);
  111.         fm.setIconImage(ic.getImage());
  112.         fm.setVisible(true);
  113.         fm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  114.         fm.add(sp);
  115.         fm.setJMenuBar(mb);
  116.     }
  117.         
  118.         Ch01(){
  119.                 initialize();
  120.         }
  121.         
  122.         public void actionPerformed(ActionEvent e){
  123.             if(e.getSource()==mi_new){
  124.                 ta.setText("");
  125.                 fm.setTitle(title+" - 未命名");
  126.             }
  127.             else if(e.getSource()==mi_open){
  128.                     int ret=fc.showOpenDialog(null);
  129.                     if(ret==JFileChooser.APPROVE_OPTION){
  130.                             try{
  131.                                     String str;
  132.                                     File fi=fc.getSelectedFile();
  133.                                     BufferedReader br=new BufferedReader(new FileReader(fi.getAbsolutePath()));
  134.                                     ta.setText(br.readLine());
  135.                                     do{
  136.                                             str=br.readLine();
  137.                                             if(str==null)
  138.                                                     break;
  139.                                             ta.append("\n"+str);
  140.                                     }while(true);
  141.                                     br.close();
  142.                                     fm.setTitle(title+" - "+fc.getName(fi));
  143.                             }catch(Exception ex){}            
  144.                     }        
  145.             }
  146.             else if(e.getSource()==mi_save){
  147.                     int ret=fc.showSaveDialog(null);
  148.                     if(ret==JFileChooser.APPROVE_OPTION){
  149.                             try{
  150.                                     File fi=fc.getSelectedFile();
  151.                                     BufferedWriter bw;
  152.                                     String ext=fi.getAbsolutePath().substring(fi.getAbsolutePath().length()-4);   //file extension 副檔名
  153.                                     System.out.println(ext);
  154.                                     String fiPath="";
  155.                                     if(fc.getFileFilter()==filter1){
  156.                                             if(ext.equals(".txt"))
  157.                                                     fiPath=fi.getAbsolutePath();
  158.                                             else
  159.                                                     fiPath=fi.getAbsolutePath()+".txt";        
  160.                                     }               
  161.                                     else
  162.                                             fiPath=fi.getAbsolutePath();
  163.                                             bw=new BufferedWriter(new FileWriter(fiPath));                     
  164.                                 bw.write(ta.getText().replaceAll("\n", "\r\n"));
  165.                                 bw.flush();
  166.                                 bw.close();
  167.                                 fm.setTitle(title+" - "+fc.getName(fi));         
  168.                     }catch(Exception ex){}
  169.                                 }        
  170.             }
  171.             else if(e.getSource()==mi_exit)
  172.                 System.exit(0);
  173.             else if(e.getSource()==mi_copy)
  174.                 ta.copy();
  175.             else if(e.getSource()==mi_paste)
  176.                 ta.paste();
  177.             else if(e.getSource()==mi_cut)
  178.                     ta.cut();
  179.             else if(e.getSource()==mi_selectall)
  180.                     ta.selectAll();
  181.             else if(e.getSource() == mi_about){
  182.                     String msg="本軟體由社團法人高雄市資訊培育協會青少年程式設計班學員\n李允軒所開發,感謝您的使用!";
  183.                 JOptionPane.showMessageDialog(fm,msg,"關於 My Editor",JOptionPane.INFORMATION_MESSAGE,ic_developer);
  184.             }
  185.         }
  186.     public static void main(String[] args){
  187.             new Ch01();
  188.     }
  189. }
複製代碼
كخخخخخخخخخخخخخ

TOP

返回列表