Board logo

標題: 文字編輯器 (八) [打印本頁]

作者: tonyh    時間: 2017-2-6 17:27     標題: 文字編輯器 (八)

本帖最後由 tonyh 於 2017-2-6 18:24 編輯

[attach]1921[/attach]

[attach]1922[/attach]

使用 JOptionPane 類別下的 showMessageDialog() 方法完成 "關於 MyEditor" 的對應動作。
  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.JDialog;
  9. import javax.swing.JScrollPane;
  10. import javax.swing.JTextArea;
  11. import javax.swing.ImageIcon;
  12. import javax.swing.UIManager;
  13. import javax.swing.border.BevelBorder;
  14. import javax.swing.filechooser.FileNameExtensionFilter;
  15. import java.awt.event.ActionListener;
  16. import java.awt.event.ActionEvent;
  17. import java.io.BufferedReader;
  18. import java.io.BufferedWriter;
  19. import java.io.File;
  20. import java.io.FileReader;
  21. import java.io.FileWriter;

  22. public class Ch08 implements ActionListener{
  23.        
  24.         String title="My Editor";
  25.         JFrame fm;
  26.         JScrollPane sp;
  27.         JTextArea ta;
  28.         ImageIcon ic,ic_cut,ic_exit,ic_new,ic_open,ic_paste,ic_save,ic_copy,ic_selectall,ic_about,ic_developer;
  29.         JMenuBar mb;
  30.         JMenu mn_file,mn_edit,mn_help;
  31.         JMenuItem mi_new,mi_open,mi_save,mi_exit,mi_copy,mi_paste,mi_cut,mi_selectall,mi_about;
  32.         JFileChooser fc;
  33.         FileNameExtensionFilter filter1;
  34.        
  35.         void initialize()
  36.         {
  37.                 try {
  38.                         UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
  39.                 } catch (Exception e){}

  40.                 filter1=new FileNameExtensionFilter("純文字文件","txt");
  41.                
  42.                 fc=new JFileChooser();
  43.                 //fc.addChoosableFileFilter(filter1);
  44.                 fc.setFileFilter(filter1);
  45.                
  46.                 ic=new ImageIcon(Ch08.class.getResource("pic/editor.png"));
  47.                 ic_cut=new ImageIcon(Ch08.class.getResource("pic/cut.png"));
  48.                 ic_exit=new ImageIcon(Ch08.class.getResource("pic/exit.png"));
  49.                 ic_new=new ImageIcon(Ch08.class.getResource("pic/new.png"));
  50.                 ic_open=new ImageIcon(Ch08.class.getResource("pic/open.png"));
  51.                 ic_paste=new ImageIcon(Ch08.class.getResource("pic/paste.png"));
  52.                 ic_save=new ImageIcon(Ch08.class.getResource("pic/save.png"));
  53.                 ic_copy=new ImageIcon(Ch08.class.getResource("pic/copy.png"));
  54.                 ic_selectall=new ImageIcon(Ch08.class.getResource("pic/selectall.png"));
  55.                 ic_about=new ImageIcon(Ch08.class.getResource("pic/about.png"));
  56.                 ic_developer=new ImageIcon(Ch08.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_file=new JMenu(" 檔案(F) ");
  78.                 mn_file.setMnemonic('F');     //設定快速鍵
  79.                 mn_file.add(mi_new);
  80.                 mn_file.add(mi_open);
  81.                 mn_file.add(mi_save);
  82.                 mn_file.addSeparator();    //分隔線
  83.                 mn_file.add(mi_exit);
  84.                
  85.                 mn_edit=new JMenu(" 編輯(E) ");
  86.                 mn_edit.setMnemonic('E');     //設定快速鍵
  87.                 mn_edit.add(mi_copy);
  88.                 mn_edit.add(mi_paste);
  89.                 mn_edit.add(mi_cut);
  90.                 mn_edit.addSeparator();
  91.                 mn_edit.add(mi_selectall);
  92.                
  93.                 mn_help=new JMenu(" 說明(H) ");
  94.                 mn_help.setMnemonic('H');     //設定快速鍵
  95.                 mn_help.add(mi_about);

  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.         Ch08()
  119.         {
  120.                 initialize();
  121.         }
  122.        
  123.         public void actionPerformed(ActionEvent e)
  124.         {
  125.                 if(e.getSource()==mi_new)
  126.                 {
  127.                     ta.setText("");
  128.                     fm.setTitle(title+" - 未命名");
  129.                 }
  130.                 else if(e.getSource()==mi_open)
  131.                 {
  132.                         int ret=fc.showOpenDialog(null);
  133.                         if(ret==JFileChooser.APPROVE_OPTION)
  134.                         {
  135.                                 try
  136.                                 {
  137.                                         String str;
  138.                                         File fi=fc.getSelectedFile();
  139.                                         BufferedReader br=new BufferedReader(new FileReader(fi.getAbsolutePath()));
  140.                                         ta.setText(br.readLine());
  141.                                         do
  142.                                         {
  143.                                                 str=br.readLine();
  144.                                                 if(str==null)
  145.                                                         break;
  146.                                                 ta.append("\n"+str);
  147.                                         }while(true);
  148.                                         br.close();
  149.                                         fm.setTitle(title+" - "+fc.getName(fi));
  150.                                 }catch(Exception ex){}
  151.                                
  152.                         }       
  153.                 }
  154.                 else if(e.getSource()==mi_save)
  155.                 {
  156.                         int ret=fc.showSaveDialog(null);
  157.                         if(ret==JFileChooser.APPROVE_OPTION)
  158.                         {
  159.                                 try
  160.                                 {
  161.                                         File fi=fc.getSelectedFile();
  162.                                         BufferedWriter bw;
  163.                                         String ext=fi.getAbsolutePath().substring(fi.getAbsolutePath().length()-4);   //file extension 副檔名
  164.                                         System.out.println(ext);
  165.                                         String fiPath="";
  166.                                         if(fc.getFileFilter()==filter1)
  167.                                         {
  168.                                                 if(ext.equals(".txt"))
  169.                                                         fiPath=fi.getAbsolutePath();
  170.                                             else
  171.                                                     fiPath=fi.getAbsolutePath()+".txt";       
  172.                                         }
  173.                                         else
  174.                                                 fiPath=fi.getAbsolutePath();
  175.                                         bw=new BufferedWriter(new FileWriter(fiPath));
  176.                                        
  177.                                         bw.write(ta.getText().replaceAll("\n", "\r\n"));
  178.                                         //windows下的文字檔分行符號:\r\n  linux/unix下的文字檔分行符號:\r  Mac下的文字檔分行符號:\n
  179.                                         bw.flush();
  180.                                         bw.close();
  181.                                         fm.setTitle(title+" - "+fc.getName(fi));
  182.                                 }catch(Exception ex){}
  183.                         }       
  184.                 }
  185.                 else if(e.getSource()==mi_exit)
  186.                         System.exit(0);
  187.                 else if(e.getSource()==mi_copy)
  188.                     ta.copy();
  189.                 else if(e.getSource()==mi_paste)
  190.                         ta.paste();
  191.                 else if(e.getSource()==mi_cut)
  192.             ta.cut();
  193.                 else if(e.getSource()==mi_selectall)
  194.                         ta.selectAll();
  195.                 else if(e.getSource()==mi_about)
  196.                 {
  197.                         String msg="本軟體由社團法人高雄市資訊培育協會青少年程式設計班學員\n林宇翔所開發,感謝您的使用!";
  198.                         JOptionPane.showMessageDialog(fm,msg,"關於 My Editor",JOptionPane.INFORMATION_MESSAGE,ic_developer);
  199.                 }
  200.         }
  201.        
  202.         public static void main(String[] args) {
  203.                 new Ch08();
  204.         }
  205. }
複製代碼

作者: 李允軒    時間: 2017-2-11 16:37

  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. }
複製代碼

作者: 林宇翔    時間: 2017-2-11 16:48

  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.JDialog;
  9. import javax.swing.JScrollPane;
  10. import javax.swing.JTextArea;
  11. import javax.swing.ImageIcon;
  12. import javax.swing.UIManager;
  13. import javax.swing.border.BevelBorder;
  14. import javax.swing.filechooser.FileNameExtensionFilter;
  15. import java.awt.event.ActionListener;
  16. import java.awt.event.ActionEvent;
  17. import java.io.BufferedReader;
  18. import java.io.BufferedWriter;
  19. import java.io.File;
  20. import java.io.FileReader;
  21. import java.io.FileWriter;

  22. public class Ch07 implements ActionListener{
  23.         
  24.         String title="My Editor";
  25.         JFrame fm;
  26.         JScrollPane sp;
  27.         JTextArea ta;
  28.         ImageIcon ic,ic_cut,ic_exit,ic_new,ic_open,ic_paste,ic_save,ic_copy,ic_selectall,ic_about,ic_developer;
  29.         JMenuBar mb;
  30.         JMenu mn_file,mn_edit,mn_help;
  31.         JMenuItem mi_new,mi_open,mi_save,mi_exit,mi_copy,mi_paste,mi_cut,mi_selectall,mi_about;
  32.         JFileChooser fc;
  33.         FileNameExtensionFilter filter1;
  34.         
  35.         void initialize()
  36.         {
  37.                 try {
  38.                         UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
  39.                 } catch (Exception e){}

  40.                 filter1=new FileNameExtensionFilter("純文字文件","txt");
  41.                
  42.                 fc=new JFileChooser();
  43.                 fc.setFileFilter(filter1);
  44.                
  45.                 ic=new ImageIcon(Ch07.class.getResource("pic/editor.png"));
  46.                 ic_cut=new ImageIcon(Ch07.class.getResource("pic/cut.png"));
  47.                 ic_exit=new ImageIcon(Ch07.class.getResource("pic/exit.png"));
  48.                 ic_new=new ImageIcon(Ch07.class.getResource("pic/new.png"));
  49.                 ic_open=new ImageIcon(Ch07.class.getResource("pic/open.png"));
  50.                 ic_paste=new ImageIcon(Ch07.class.getResource("pic/paste.png"));
  51.                 ic_save=new ImageIcon(Ch07.class.getResource("pic/save.png"));
  52.                 ic_copy=new ImageIcon(Ch07.class.getResource("pic/copy.png"));
  53.                 ic_selectall=new ImageIcon(Ch07.class.getResource("pic/selectall.png"));
  54.                 ic_about=new ImageIcon(Ch07.class.getResource("pic/about.png"));
  55.                 ic_developer=new ImageIcon(Ch07.class.getResource("pic/developer.png"));
  56.                
  57.                 mi_new=new JMenuItem("開新檔案",ic_new);
  58.                 mi_new.addActionListener(this);
  59.                 mi_open=new JMenuItem("開啟舊檔",ic_open);
  60.                 mi_open.addActionListener(this);
  61.                 mi_save=new JMenuItem("儲存檔案",ic_save);
  62.                 mi_save.addActionListener(this);
  63.                 mi_exit=new JMenuItem("結束",ic_exit);
  64.                 mi_exit.addActionListener(this);
  65.                 mi_copy=new JMenuItem("複製",ic_copy);
  66.                 mi_copy.addActionListener(this);
  67.                 mi_paste=new JMenuItem("貼上",ic_paste);
  68.                 mi_paste.addActionListener(this);
  69.                 mi_cut=new JMenuItem("剪下",ic_cut);
  70.                 mi_cut.addActionListener(this);
  71.                 mi_selectall=new JMenuItem("全選",ic_selectall);
  72.                 mi_selectall.addActionListener(this);
  73.                 mi_about=new JMenuItem("關於 My Editor",ic_about);
  74.                 mi_about.addActionListener(this);
  75.                
  76.                 mn_file=new JMenu(" 檔案(F) ");
  77.                 mn_file.setMnemonic('F');   
  78.                 mn_file.add(mi_new);
  79.                 mn_file.add(mi_open);
  80.                 mn_file.add(mi_save);
  81.                 mn_file.addSeparator();   
  82.                 mn_file.add(mi_exit);
  83.                
  84.                 mn_edit=new JMenu(" 編輯(E) ");
  85.                 mn_edit.setMnemonic('E');     
  86.                 mn_edit.add(mi_copy);
  87.                 mn_edit.add(mi_paste);
  88.                 mn_edit.add(mi_cut);
  89.                 mn_edit.addSeparator();
  90.                 mn_edit.add(mi_selectall);
  91.                
  92.                 mn_help=new JMenu(" 說明(H) ");
  93.                 mn_help.setMnemonic('H');     
  94.                 mn_help.add(mi_about);

  95.                
  96.                 mb=new JMenuBar();
  97.                 mb.setBorder(new BevelBorder(BevelBorder.RAISED));  
  98.                 mb.add(mn_file);
  99.                 mb.add(mn_edit);
  100.                 mb.add(mn_help);
  101.                
  102.                 ta=new JTextArea();
  103.                 ta.setFont(new Font("新細明體", Font.PLAIN, 18));
  104.                 ta.setLineWrap(true);     
  105.                 sp=new JScrollPane(ta);
  106.                
  107.                 fm=new JFrame(title+" - 未命名");
  108.                 fm.setBounds(100, 100, 500, 350);
  109.                 fm.setIconImage(ic.getImage());
  110.                 fm.setVisible(true);
  111.                 fm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  112.                 fm.add(sp);
  113.                 fm.setJMenuBar(mb);
  114.         }
  115.         
  116.         Ch07()
  117.         {
  118.                 initialize();
  119.         }
  120.         
  121.         public void actionPerformed(ActionEvent e)
  122.         {
  123.                 if(e.getSource()==mi_new)
  124.                 {
  125.                     ta.setText("");
  126.                     fm.setTitle(title+" - 未命名");
  127.                 }
  128.                 else if(e.getSource()==mi_open)
  129.                 {
  130.                         int ret=fc.showOpenDialog(null);
  131.                         if(ret==JFileChooser.APPROVE_OPTION)
  132.                         {
  133.                                 try
  134.                                 {
  135.                                         String str;
  136.                                         File fi=fc.getSelectedFile();
  137.                                         BufferedReader br=new BufferedReader(new FileReader(fi.getAbsolutePath()));
  138.                                         ta.setText(br.readLine());
  139.                                         do
  140.                                         {
  141.                                                 str=br.readLine();
  142.                                                 if(str==null)
  143.                                                         break;
  144.                                                 ta.append("\n"+str);
  145.                                         }while(true);
  146.                                         br.close();
  147.                                         fm.setTitle(title+" - "+fc.getName(fi));
  148.                                 }catch(Exception ex){}
  149.                                 
  150.                         }        
  151.                 }
  152.                 else if(e.getSource()==mi_save)
  153.                 {
  154.                         int ret=fc.showSaveDialog(null);
  155.                         if(ret==JFileChooser.APPROVE_OPTION)
  156.                         {
  157.                                 try
  158.                                 {
  159.                                         File fi=fc.getSelectedFile();
  160.                                         BufferedWriter bw;
  161.                                         String ext=fi.getAbsolutePath().substring(fi.getAbsolutePath().length()-4);   
  162.                                         System.out.println(ext);
  163.                                         String fiPath="";
  164.                                         if(fc.getFileFilter()==filter1)
  165.                                         {
  166.                                                 if(ext.equals(".txt"))
  167.                                                         fiPath=fi.getAbsolutePath();
  168.                                             else
  169.                                                     fiPath=fi.getAbsolutePath()+".txt";        
  170.                                         }
  171.                                         else
  172.                                                 fiPath=fi.getAbsolutePath();
  173.                                         bw=new BufferedWriter(new FileWriter(fiPath));
  174.                                        
  175.                                         bw.write(ta.getText().replaceAll("\n", "\r\n"));
  176.                                         bw.flush();
  177.                                         bw.close();
  178.                                         fm.setTitle(title+" - "+fc.getName(fi));
  179.                                 }catch(Exception ex){}
  180.                         }        
  181.                 }
  182.                 else if(e.getSource()==mi_exit)
  183.                         System.exit(0);
  184.                 else if(e.getSource()==mi_copy)
  185.                     ta.copy();
  186.                 else if(e.getSource()==mi_paste)
  187.                         ta.paste();
  188.                 else if(e.getSource()==mi_cut)
  189.             ta.cut();
  190.                 else if(e.getSource()==mi_selectall)
  191.                         ta.selectAll();
  192.                 else if(e.getSource()==mi_about)
  193.                 {
  194.                         String msg="本軟體由社團法人高雄市資訊培育協會青少年程式設計班學員\n林宇翔所開發,感謝您的使用!";
  195.                         JOptionPane.showMessageDialog(fm,msg,"關於 My Editor",JOptionPane.INFORMATION_MESSAGE,ic_developer);
  196.                 }
  197.         }
  198.         
  199.         public static void main(String[] args) {
  200.                 new Ch07();
  201.         }
  202. }
複製代碼

作者: 劉得恩    時間: 2017-2-11 17:07

  1. import java.awt.Font;
  2. import java.awt.event.ActionListener;
  3. import java.awt.event.ActionEvent;
  4. import javax.swing.*;
  5. import javax.swing.border.BevelBorder;
  6. import java.io.File;
  7. import java.io.FileWriter;
  8. import java.io.BufferedWriter;
  9. import java.io.FileReader;
  10. import java.io.BufferedReader;
  11. import javax.swing.filechooser.FileNameExtensionFilter;
  12. public class Ch08 implements ActionListener{
  13.         JFrame f;
  14.         JTextArea t;
  15.         JScrollPane s;
  16.         JMenuItem mi[]=new JMenuItem[9];
  17.         String name[]=new String[]{"new","open","save","exit","copy","paste","cut","selectall","about"};
  18.         ImageIcon ic,d;
  19.         JMenuBar mb;
  20.         JMenu fl,ed,h;
  21.         JFileChooser fc;
  22.         FileNameExtensionFilter filter1,filter2;
  23.         String title="MyEditor";
  24.         Ch08()
  25.         {        
  26.                 d=new ImageIcon(Ch08.class.getResource("pic/developer.png"));
  27.             ic=new ImageIcon(Ch08.class.getResource("pic/editor.png"));
  28.             try
  29.             {
  30.                     UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
  31.             }catch(Exception e){}
  32.             fc=new JFileChooser();
  33.             for(int i=0;i<9;i++)
  34.             {
  35.                     mi[i]=new JMenuItem(name[i],new ImageIcon(Ch08.class.getResource("pic/"+name[i]+".png")));
  36.             }
  37.             fl=new JMenu("檔案(F)");   
  38.             ed=new JMenu("編輯(E)");
  39.             h=new JMenu("說明(H)");
  40.             fl.setMnemonic('F');
  41.             ed.setMnemonic('E');
  42.             h.setMnemonic('H');
  43.             filter1=new FileNameExtensionFilter("純文字", "txt");
  44.             filter2=new FileNameExtensionFilter("圖片檔", "jpg","png","bmp");
  45.             fc.addChoosableFileFilter(filter1);
  46.             fc.addChoosableFileFilter(filter2);
  47.             fc.setFileFilter(filter1);
  48.             for(int i=0;i<3;i++)
  49.             {
  50.                     mi[i].addActionListener(this);
  51.                     fl.add(mi[i]);
  52.             }
  53.             fl.addSeparator();
  54.             mi[3].addActionListener(this);
  55.             fl.add(mi[3]);
  56.             for(int i=4;i<7;i++)
  57.             {
  58.                     mi[i].addActionListener(this);
  59.                     ed.add(mi[i]);                                
  60.             }
  61.             mi[8].addActionListener(this);
  62.             h.add(mi[8]);
  63.             ed.addSeparator();
  64.             ed.add(mi[7]);
  65.             mi[7].addActionListener(this);
  66.             mb=new JMenuBar();
  67.             mb.setBorder(new BevelBorder(BevelBorder.RAISED));
  68.             mb.add(fl);
  69.             mb.add(ed);
  70.             mb.add(h);
  71.             t=new JTextArea();
  72.             t.setLineWrap(true);
  73.             t.setFont(new Font("新細明體",Font.PLAIN,15));
  74.             s=new JScrollPane(t);
  75.             f=new JFrame(title+" 未命名");
  76.             f.setBounds(100,100,400,300);
  77.             f.setIconImage(ic.getImage());
  78.             f.setResizable(true);
  79.             f.setVisible(true);
  80.             f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  81.             f.add(s);
  82.             f.setJMenuBar(mb);
  83.         }
  84.         public void actionPerformed(ActionEvent e)
  85.         {        
  86.                 if(e.getSource()==mi[0])
  87.                 {
  88.                         t.setText("");
  89.                         f.setTitle(title+" 未命名");
  90.                 }
  91.                 else if(e.getSource()==mi[3])
  92.                         System.exit(0);
  93.                 else if(e.getSource()==mi[4])
  94.                 {
  95.                         t.copy();
  96.                 }
  97.                 else if(e.getSource()==mi[5])
  98.                 {
  99.                         t.paste();
  100.                 }
  101.                 else if(e.getSource()==mi[6])
  102.                 {
  103.                         t.cut();
  104.                 }
  105.                 else if(e.getSource()==mi[7])
  106.                 {
  107.                         t.selectAll();
  108.                 }
  109.                 else if(e.getSource()==mi[2])
  110.                 {
  111.                     int r=fc.showSaveDialog(null);
  112.                     File fi=fc.getSelectedFile();
  113.                     String fPath=fi.getAbsolutePath();
  114.                     String ext=fi.getAbsolutePath().substring(fi.getAbsolutePath().length()-4);
  115.                     if(r==JFileChooser.APPROVE_OPTION)
  116.                     {
  117.                             System.out.println(ext);
  118.                         if(fc.getFileFilter()==filter1&&!ext.equals(".txt"))
  119.                                 fPath+=".txt";
  120.                         else if(fc.getFileFilter()==filter2&&!ext.equals(".jpg"))
  121.                             fPath+=".jpg";
  122.                         try
  123.                         {
  124.                             BufferedWriter bw=new BufferedWriter(new FileWriter(fPath));
  125.                             bw.write(t.getText().replaceAll("\n","\r\n"));
  126.                             bw.flush();
  127.                             bw.close();
  128.                             f.setTitle(title+" - "+fPath);
  129.                         }
  130.                         catch(Exception ex){}
  131.                     }
  132.                 }
  133.                 else if(e.getSource()==mi[1])
  134.                 {
  135.                         int r=fc.showOpenDialog(null);
  136.                         File fi=fc.getSelectedFile();
  137.                             if(r==JFileChooser.APPROVE_OPTION)
  138.                         {
  139.                                 try
  140.                                 {
  141.                                         BufferedReader br=new BufferedReader(new FileReader(fi.getAbsolutePath()));
  142.                                         t.setText(br.readLine());
  143.                                         while(true)
  144.                                         {
  145.                                                 String s=br.readLine();
  146.                                                 if(s==null)
  147.                                                         break;
  148.                                                 t.append("\n"+s);
  149.                                         }
  150.                                         br.close();                                       
  151.                                 }
  152.                                 catch(Exception ex){}
  153.                         }
  154.                 }
  155.                 else if(e.getSource()==mi[8])
  156.                 {
  157.                         String msg="A";
  158.                                        
  159.                         JOptionPane.showMessageDialog(f,msg,"About",JOptionPane.INFORMATION_MESSAGE);
  160.                 }
  161.         }
  162.         public static void main(String[] arg)
  163.         {
  164.                 new Ch08();
  165.         }
  166. }
複製代碼

作者: 張彥承    時間: 2017-3-7 18:39

  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 Ch100 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(Ch100.class.getResource("pic/editor.png"));
  47.         ic_cut=new ImageIcon(Ch100.class.getResource("pic/cut.png"));
  48.         ic_exit=new ImageIcon(Ch100.class.getResource("pic/exit.png"));
  49.         ic_new=new ImageIcon(Ch100.class.getResource("pic/new.png"));
  50.         ic_open=new ImageIcon(Ch100.class.getResource("pic/open.png"));
  51.         ic_paste=new ImageIcon(Ch100.class.getResource("pic/paste.png"));
  52.         ic_save=new ImageIcon(Ch100.class.getResource("pic/save.png"));
  53.         ic_copy=new ImageIcon(Ch100.class.getResource("pic/copy.png"));
  54.         ic_selectall=new ImageIcon(Ch100.class.getResource("pic/selectall.png"));
  55.         ic_about=new ImageIcon(Ch100.class.getResource("pic/about.png"));
  56.         ic_developer=new ImageIcon(Ch100.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.         
  113.         fm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  114.         fm.add(sp);
  115.         fm.setJMenuBar(mb);
  116.         fm.setVisible(true);
  117.     }
  118.         
  119.         Ch100(){
  120.                 initialize();
  121.         }
  122.         
  123.         public void actionPerformed(ActionEvent e){
  124.             if(e.getSource()==mi_new){
  125.                 ta.setText("");
  126.                 fm.setTitle(title+" - 未命名");
  127.             }
  128.             else if(e.getSource()==mi_open){
  129.                     int ret=fc.showOpenDialog(null);
  130.                     if(ret==JFileChooser.APPROVE_OPTION){
  131.                             try{
  132.                                     String str;
  133.                                     File fi=fc.getSelectedFile();
  134.                                     BufferedReader br=new BufferedReader(new FileReader(fi.getAbsolutePath()));
  135.                                     ta.setText(br.readLine());
  136.                                     do{
  137.                                             str=br.readLine();
  138.                                             if(str==null)
  139.                                                     break;
  140.                                             ta.append("\n"+str);
  141.                                     }while(true);
  142.                                     br.close();
  143.                                     fm.setTitle(title+" - "+fc.getName(fi));
  144.                             }catch(Exception ex){}            
  145.                     }        
  146.             }
  147.             else if(e.getSource()==mi_save){
  148.                     int ret=fc.showSaveDialog(null);
  149.                     if(ret==JFileChooser.APPROVE_OPTION){
  150.                             try{
  151.                                     File fi=fc.getSelectedFile();
  152.                                     BufferedWriter bw;
  153.                                     String ext=fi.getAbsolutePath().substring(fi.getAbsolutePath().length()-4);   //file extension 副檔名
  154.                                     System.out.println(ext);
  155.                                     String fiPath="";
  156.                                     if(fc.getFileFilter()==filter1){
  157.                                             if(ext.equals(".txt"))
  158.                                                     fiPath=fi.getAbsolutePath();
  159.                                             else
  160.                                                     fiPath=fi.getAbsolutePath()+".txt";        
  161.                                     }               
  162.                                     else
  163.                                             fiPath=fi.getAbsolutePath();
  164.                                             bw=new BufferedWriter(new FileWriter(fiPath));                     
  165.                                 bw.write(ta.getText().replaceAll("\n", "\r\n"));
  166.                                 bw.flush();
  167.                                 bw.close();
  168.                                 fm.setTitle(title+" - "+fc.getName(fi));         
  169.                     }catch(Exception ex){}
  170.                                 }        
  171.             }
  172.             else if(e.getSource()==mi_exit)
  173.                 System.exit(0);
  174.             else if(e.getSource()==mi_copy)
  175.                 ta.copy();
  176.             else if(e.getSource()==mi_paste)
  177.                 ta.paste();
  178.             else if(e.getSource()==mi_cut)
  179.                     ta.cut();
  180.             else if(e.getSource()==mi_selectall)
  181.                     ta.selectAll();
  182.             else if(e.getSource() == mi_about){
  183.                     String msg="本軟體由社團法人高雄市資訊培育協會青少年程式設計班學員\n張彥承所開發,感謝您的使用!";
  184.                 JOptionPane.showMessageDialog(fm,msg,"關於 My Editor",JOptionPane.INFORMATION_MESSAGE,ic_developer);
  185.             }
  186.         }
  187.     public static void main(String[] args){
  188.             new Ch100();
  189.     }
  190. }
複製代碼





歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://istak.org.tw/seed/) Powered by Discuz! 7.2