返回列表 發帖

文字編輯器 (九)

本帖最後由 tonyh 於 2017-2-11 17:09 編輯

使用 JRadioButtonMenuItem 類別產生帶有 radio button 的 menu item,再將同一區塊的選項加入由 ButtonGroup 類別所產生的群組物件中,使於同一區塊只有一個選項可被選取。





  1. import java.awt.Font;
  2. import javax.swing.ButtonGroup;
  3. import javax.swing.JFileChooser;
  4. import javax.swing.JFrame;
  5. import javax.swing.JMenu;
  6. import javax.swing.JMenuBar;
  7. import javax.swing.JMenuItem;
  8. import javax.swing.JRadioButtonMenuItem;
  9. import javax.swing.JOptionPane;
  10. //import javax.swing.JDialog;
  11. import javax.swing.JScrollPane;
  12. import javax.swing.JTextArea;
  13. import javax.swing.ImageIcon;
  14. import javax.swing.UIManager;
  15. import javax.swing.border.BevelBorder;
  16. import javax.swing.filechooser.FileNameExtensionFilter;
  17. import java.awt.event.ActionListener;
  18. import java.awt.event.ActionEvent;
  19. import java.io.BufferedReader;
  20. import java.io.BufferedWriter;
  21. import java.io.File;
  22. import java.io.FileReader;
  23. import java.io.FileWriter;

  24. public class Ch09 implements ActionListener{
  25.        
  26.         String title="My Editor";
  27.         JFrame fm,fm2;
  28.         JScrollPane sp;
  29.         JTextArea ta;
  30.         ImageIcon ic,ic_cut,ic_exit,ic_new,ic_open,ic_paste,ic_save,ic_copy,ic_selectall,ic_about,ic_developer,ic_size,ic_style,ic_type;
  31.         JMenuBar mb;
  32.         JMenu mn_file,mn_edit,mn_option,mn_help,mn_size,mn_type,mn_style;
  33.         JMenuItem mi_new,mi_open,mi_save,mi_exit,mi_copy,mi_paste,mi_cut,mi_selectall,mi_about;
  34.         JRadioButtonMenuItem rbmi_1[]=new JRadioButtonMenuItem[3];
  35.         JRadioButtonMenuItem rbmi_2[]=new JRadioButtonMenuItem[4];
  36.         JRadioButtonMenuItem rbmi_3[]=new JRadioButtonMenuItem[2];
  37.         ButtonGroup bg_1,bg_2,bg_3;
  38.         JFileChooser fc;
  39.         FileNameExtensionFilter filter1;
  40.        
  41.         void initialize()
  42.         {
  43.                 try {
  44.                         UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
  45.                 } catch (Exception e){}

  46.                 filter1 = new FileNameExtensionFilter("文字文件(*.txt)", "txt");
  47.                
  48.                 fc=new JFileChooser();
  49.                 fc.setFileFilter(filter1);
  50.                
  51.                 ic=new ImageIcon(Ch09.class.getResource("pic/editor.png"));
  52.                 ic_cut=new ImageIcon(Ch09.class.getResource("pic/cut.png"));
  53.                 ic_exit=new ImageIcon(Ch09.class.getResource("pic/exit.png"));
  54.                 ic_new=new ImageIcon(Ch09.class.getResource("pic/new.png"));
  55.                 ic_open=new ImageIcon(Ch09.class.getResource("pic/open.png"));
  56.                 ic_paste=new ImageIcon(Ch09.class.getResource("pic/paste.png"));
  57.                 ic_save=new ImageIcon(Ch09.class.getResource("pic/save.png"));
  58.                 ic_copy=new ImageIcon(Ch09.class.getResource("pic/copy.png"));
  59.                 ic_selectall=new ImageIcon(Ch09.class.getResource("pic/selectall.png"));
  60.                 ic_about=new ImageIcon(Ch09.class.getResource("pic/about.png"));
  61.                 ic_developer=new ImageIcon(Ch09.class.getResource("pic/developer.png"));
  62.                 ic_size=new ImageIcon(Ch09.class.getResource("pic/size.png"));
  63.                 ic_type=new ImageIcon(Ch09.class.getResource("pic/type.png"));
  64.                 ic_style=new ImageIcon(Ch09.class.getResource("pic/style.png"));
  65.                
  66.                 mi_new=new JMenuItem("開新檔案",ic_new);
  67.                 mi_new.addActionListener(this);
  68.                 mi_open=new JMenuItem("開啟舊檔",ic_open);
  69.                 mi_open.addActionListener(this);
  70.                 mi_save=new JMenuItem("儲存檔案",ic_save);
  71.                 mi_save.addActionListener(this);
  72.                 mi_exit=new JMenuItem("結束",ic_exit);
  73.                 mi_exit.addActionListener(this);
  74.                 mi_copy=new JMenuItem("複製",ic_copy);
  75.                 mi_copy.addActionListener(this);
  76.                 mi_paste=new JMenuItem("貼上",ic_paste);
  77.                 mi_paste.addActionListener(this);
  78.                 mi_cut=new JMenuItem("剪下",ic_cut);
  79.                 mi_cut.addActionListener(this);
  80.                 mi_selectall=new JMenuItem("全選",ic_selectall);
  81.                 mi_selectall.addActionListener(this);
  82.                 mi_about=new JMenuItem("關於 My Editor",ic_about);
  83.                 mi_about.addActionListener(this);
  84.                
  85.                 rbmi_1[0]=new JRadioButtonMenuItem("大 (22)");
  86.                 rbmi_1[1]=new JRadioButtonMenuItem("中 (18)",true);
  87.                 rbmi_1[2]=new JRadioButtonMenuItem("小 (14)");
  88.                 bg_1=new ButtonGroup();
  89.                 for(int i=0; i<rbmi_1.length; i++)
  90.                         bg_1.add(rbmi_1[i]);
  91.                
  92.                 rbmi_2[0]=new JRadioButtonMenuItem("一般",true);
  93.                 rbmi_2[1]=new JRadioButtonMenuItem("粗體");
  94.                 rbmi_2[2]=new JRadioButtonMenuItem("斜體");
  95.                 rbmi_2[3]=new JRadioButtonMenuItem("粗體+斜體");
  96.                 bg_2=new ButtonGroup();
  97.                 for(int i=0; i<rbmi_2.length; i++)
  98.                         bg_2.add(rbmi_2[i]);
  99.                        
  100.                 rbmi_3[0]=new JRadioButtonMenuItem("白底黑字",true);
  101.                 rbmi_3[1]=new JRadioButtonMenuItem("黑底白字");
  102.                 bg_3=new ButtonGroup();
  103.                 for(int i=0; i<rbmi_3.length; i++)
  104.                         bg_3.add(rbmi_3[i]);

  105.                 mn_file=new JMenu(" 檔案(F) ");
  106.                 mn_file.setMnemonic('F');     //設定快速鍵
  107.                 mn_file.add(mi_new);
  108.                 mn_file.add(mi_open);
  109.                 mn_file.add(mi_save);
  110.                 mn_file.addSeparator();    //分隔線
  111.                 mn_file.add(mi_exit);
  112.                
  113.                 mn_edit=new JMenu(" 編輯(E) ");
  114.                 mn_edit.setMnemonic('E');     //設定快速鍵
  115.                 mn_edit.add(mi_copy);
  116.                 mn_edit.add(mi_paste);
  117.                 mn_edit.add(mi_cut);
  118.                 mn_edit.addSeparator();
  119.                 mn_edit.add(mi_selectall);
  120.                
  121.                 mn_size=new JMenu("文字大小");
  122.                 mn_size.setIcon(ic_size);
  123.                 for(int i=0; i<rbmi_1.length; i++)
  124.                         mn_size.add(rbmi_1[i]);
  125.                 mn_type=new JMenu("文字樣式");
  126.                 mn_type.setIcon(ic_type);
  127.                 for(int i=0; i<rbmi_2.length; i++)
  128.                         mn_type.add(rbmi_2[i]);
  129.                 mn_style=new JMenu("風格");
  130.                 mn_style.setIcon(ic_style);
  131.                 for(int i=0; i<rbmi_3.length; i++)
  132.                         mn_style.add(rbmi_3[i]);
  133.                
  134.                 mn_option=new JMenu(" 設定(O) ");
  135.                 mn_option.setMnemonic('O');
  136.                 mn_option.add(mn_size);
  137.                 mn_option.add(mn_type);
  138.                 mn_option.addSeparator();
  139.                 mn_option.add(mn_style);
  140.                
  141.                 mn_help=new JMenu(" 說明(H) ");
  142.                 mn_help.setMnemonic('H');     //設定快速鍵
  143.                 mn_help.add(mi_about);
  144.         
  145.                 mb=new JMenuBar();
  146.                 mb.setBorder(new BevelBorder(BevelBorder.RAISED));   //設定具陰影效果的邊框
  147.                 mb.add(mn_file);
  148.                 mb.add(mn_edit);
  149.                 mb.add(mn_option);
  150.                 mb.add(mn_help);
  151.                
  152.                 ta=new JTextArea();
  153.                 ta.setFont(new Font("新細明體", Font.PLAIN, 18));
  154.                 ta.setLineWrap(true);     //自動換行
  155.                
  156.                 sp=new JScrollPane(ta);
  157.                
  158.                 fm=new JFrame(title+" - 未命名");
  159.                 fm.setBounds(100, 100, 500, 350);
  160.                 fm.setIconImage(ic.getImage());
  161.                 fm.setVisible(true);
  162.                 fm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  163.                 fm.add(sp);
  164.                 fm.setJMenuBar(mb);
  165.         }
  166.        
  167.         Ch09()
  168.         {
  169.                 initialize();
  170.         }
  171.        
  172.         public void actionPerformed(ActionEvent e)
  173.         {
  174.                 if(e.getSource()==mi_new)
  175.                 {
  176.                     ta.setText("");
  177.                     fm.setTitle(title+" - 未命名");
  178.                 }
  179.                 else if(e.getSource()==mi_open)
  180.                 {
  181.                         int ret=fc.showOpenDialog(null);
  182.                         if(ret==JFileChooser.APPROVE_OPTION)
  183.                         {
  184.                                 try
  185.                                 {
  186.                                         String str;
  187.                                         File fi=fc.getSelectedFile();
  188.                                         BufferedReader br=new BufferedReader(new FileReader(fi.getAbsolutePath()));
  189.                                         ta.setText(br.readLine());
  190.                                         do
  191.                                         {
  192.                                                 str=br.readLine();
  193.                                                 if(str==null)
  194.                                                         break;
  195.                                                 ta.append("\n"+str);
  196.                                         }while(true);
  197.                                         br.close();
  198.                                         fm.setTitle(title+" - "+fc.getName(fi));
  199.                                 }catch(Exception ex){}
  200.                                
  201.                         }       
  202.                 }
  203.                 else if(e.getSource()==mi_save)
  204.                 {
  205.                         int ret=fc.showSaveDialog(null);
  206.                         if(ret==JFileChooser.APPROVE_OPTION)
  207.                         {
  208.                                 try
  209.                                 {
  210.                                         File fi=fc.getSelectedFile();
  211.                                         BufferedWriter bw;
  212.                                         String ext=fi.getAbsolutePath().substring(fi.getAbsolutePath().length()-4);
  213.                                         System.out.println(ext);
  214.                                         String fiPath="";
  215.                                         if(fc.getFileFilter()==filter1)
  216.                                         {
  217.                                                 if(ext.equals(".txt"))
  218.                                                         fiPath=fi.getAbsolutePath();
  219.                                             else
  220.                                                     fiPath=fi.getAbsolutePath()+".txt";       
  221.                                         }
  222.                                         else
  223.                                                 fiPath=fi.getAbsolutePath();
  224.                                         bw=new BufferedWriter(new FileWriter(fiPath));
  225.                                        
  226.                                         bw.write(ta.getText().replaceAll("\n", "\r\n"));
  227.                                         //windows下的文字檔分行符號:\r\n  linux/unix下的文字檔分行符號:\r  Mac下的文字檔分行符號:\n
  228.                                         bw.flush();
  229.                                         bw.close();
  230.                                         fm.setTitle(title+" - "+fc.getName(fi));
  231.                                 }catch(Exception ex){}
  232.                         }       
  233.                 }
  234.                 else if(e.getSource()==mi_exit)
  235.                         System.exit(0);
  236.                 else if(e.getSource()==mi_copy)
  237.                     ta.copy();
  238.                 else if(e.getSource()==mi_paste)
  239.                         ta.paste();
  240.                 else if(e.getSource()==mi_cut)
  241.             ta.cut();
  242.                 else if(e.getSource()==mi_selectall)
  243.                         ta.selectAll();
  244.                 else if(e.getSource()==mi_about)
  245.                 {
  246.                         String msg="本軟體由社團法人高雄市資訊培育協會青少年程式設計班學員\n林宇翔所開發,感謝您的使用!";
  247.                         JOptionPane.showMessageDialog(fm,msg,"關於 My Editor",JOptionPane.INFORMATION_MESSAGE,ic_developer);
  248.                 }
  249.         }
  250.        
  251.         public static void main(String[] args) {
  252.                 new Ch09();
  253.         }
  254. }
複製代碼
附件: 您需要登錄才可以下載或查看附件。沒有帳號?註冊

  1.     mn_file=new JMenu(" 檔案(F) ");
  2.                 mn_file.setMnemonic('F');     
  3.                 mn_file.add(mi_new);
  4.                 mn_file.add(mi_open);
  5.                 mn_file.add(mi_save);
  6.                 mn_file.addSeparator();   
  7.                 mn_file.add(mi_exit);
  8.                
  9.                 mn_edit=new JMenu(" 編輯(E) ");
  10.                 mn_edit.setMnemonic('E');   
  11.                 mn_edit.add(mi_copy);
  12.                 mn_edit.add(mi_paste);
  13.                 mn_edit.add(mi_cut);
  14.                 mn_edit.addSeparator();
  15.                 mn_edit.add(mi_selectall);
  16.                
  17.                 mn_size=new JMenu("文字大小");
  18.                 mn_size.setIcon(ic_size);
  19.                 for(int i=0; i<rbmi_1.length; i++)
  20.                         mn_size.add(rbmi_1[i]);
  21.                 mn_type=new JMenu("文字樣式");
  22.                 mn_type.setIcon(ic_type);
  23.                 for(int i=0; i<rbmi_2.length; i++)
  24.                         mn_type.add(rbmi_2[i]);
  25.                 mn_style=new JMenu("風格");
  26.                 mn_style.setIcon(ic_style);
  27.                 for(int i=0; i<rbmi_3.length; i++)
  28.                         mn_style.add(rbmi_3[i]);
  29.                
  30.                 mn_option=new JMenu(" 設定(O) ");
  31.                 mn_option.setMnemonic('O');
  32.                 mn_option.add(mn_size);
  33.                 mn_option.add(mn_type);
  34.                 mn_option.addSeparator();
  35.                 mn_option.add(mn_style);
  36.                
  37.                 mn_help=new JMenu(" 說明(H) ");
  38.                 mn_help.setMnemonic('H');   
  39.                 mn_help.add(mi_about);
  40.         
  41.                 mb=new JMenuBar();
  42.                 mb.setBorder(new BevelBorder(BevelBorder.RAISED));   //設定具陰影效果的邊框
  43.                 mb.add(mn_file);
  44.                 mb.add(mn_edit);
  45.                 mb.add(mn_option);
  46.                 mb.add(mn_help);
  47.                
  48.                 ta=new JTextArea();
  49.                 ta.setFont(new Font("新細明體", Font.PLAIN, 18));
  50.                 ta.setLineWrap(true);   
  51.                
  52.                 sp=new JScrollPane(ta);
  53.                
  54.                 fm=new JFrame(title+" - 未命名");
  55.                 fm.setBounds(100, 100, 500, 350);
  56.                 fm.setIconImage(ic.getImage());
  57.                 fm.setVisible(true);
  58.                 fm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  59.                 fm.add(sp);
  60.                 fm.setJMenuBar(mb);
  61.         }
  62.         
  63.         Ch100()
  64.         {
  65.                 initialize();
  66.         }
  67.         
  68.         public void actionPerformed(ActionEvent e)
  69.         {
  70.                 if(e.getSource()==mi_new)
  71.                 {
  72.                     ta.setText("");
  73.                     fm.setTitle(title+" - 未命名");
  74.                 }
  75.                 else if(e.getSource()==mi_open)
  76.                 {
  77.                         int ret=fc.showOpenDialog(null);
  78.                         if(ret==JFileChooser.APPROVE_OPTION)
  79.                         {
  80.                                 try
  81.                                 {
  82.                                         String str;
  83.                                         File fi=fc.getSelectedFile();
  84.                                         BufferedReader br=new BufferedReader(new FileReader(fi.getAbsolutePath()));
  85.                                         ta.setText(br.readLine());
  86.                                         do
  87.                                         {
  88.                                                 str=br.readLine();
  89.                                                 if(str==null)
  90.                                                         break;
  91.                                                 ta.append("\n"+str);
  92.                                         }while(true);
  93.                                         br.close();
  94.                                         fm.setTitle(title+" - "+fc.getName(fi));
  95.                                 }catch(Exception ex){}
  96.                                 
  97.                         }        
  98.                 }
  99.                 else if(e.getSource()==mi_save)
  100.                 {
  101.                         int ret=fc.showSaveDialog(null);
  102.                         if(ret==JFileChooser.APPROVE_OPTION)
  103.                         {
  104.                                 try
  105.                                 {
  106.                                         File fi=fc.getSelectedFile();
  107.                                         BufferedWriter bw;
  108.                                         String ext=fi.getAbsolutePath().substring(fi.getAbsolutePath().length()-4);
  109.                                         System.out.println(ext);
  110.                                         String fiPath="";
  111.                                         if(fc.getFileFilter()==filter1)
  112.                                         {
  113.                                                 if(ext.equals(".txt"))
  114.                                                         fiPath=fi.getAbsolutePath();
  115.                                             else
  116.                                                     fiPath=fi.getAbsolutePath()+".txt";        
  117.                                         }
  118.                                         else
  119.                                                 fiPath=fi.getAbsolutePath();
  120.                                         bw=new BufferedWriter(new FileWriter(fiPath));
  121.                                        
  122.                                         bw.write(ta.getText().replaceAll("\n", "\r\n"));
  123.                                        
  124.                                         bw.flush();
  125.                                         bw.close();
  126.                                         fm.setTitle(title+" - "+fc.getName(fi));
  127.                                 }catch(Exception ex){}
  128.                         }        
  129.                 }
  130.                 else if(e.getSource()==mi_exit)
  131.                         System.exit(0);
  132.                 else if(e.getSource()==mi_copy)
  133.                     ta.copy();
  134.                 else if(e.getSource()==mi_paste)
  135.                         ta.paste();
  136.                 else if(e.getSource()==mi_cut)
  137.             ta.cut();
  138.                 else if(e.getSource()==mi_selectall)
  139.                         ta.selectAll();
  140.                 else if(e.getSource()==mi_about)
  141.                 {
  142.                         String msg="本軟體由社團法人高雄市資訊培育協會青少年程式設計班學員\n林宇翔所開發,感謝您的使用!";
  143.                         JOptionPane.showMessageDialog(fm,msg,"關於 My Editor",JOptionPane.INFORMATION_MESSAGE,ic_developer);
  144.                 }
  145.         }
  146.         
  147.         public static void main(String[] args)
  148.         {
  149.                 new Ch100();
  150.         }
  151. }
複製代碼

TOP

  1. import java.awt.Font;
  2. import javax.swing.ButtonGroup;
  3. import javax.swing.JFileChooser;
  4. import javax.swing.JFrame;
  5. import javax.swing.JMenu;
  6. import javax.swing.JMenuBar;
  7. import javax.swing.JMenuItem;
  8. import javax.swing.JRadioButtonMenuItem;
  9. import javax.swing.JOptionPane;
  10. import javax.swing.JScrollPane;
  11. import javax.swing.JTextArea;
  12. import javax.swing.ImageIcon;
  13. import javax.swing.UIManager;
  14. import javax.swing.border.BevelBorder;
  15. import javax.swing.filechooser.FileNameExtensionFilter;
  16. import java.awt.event.ActionListener;
  17. import java.awt.event.ActionEvent;
  18. import java.io.BufferedReader;
  19. import java.io.BufferedWriter;
  20. import java.io.File;
  21. import java.io.FileReader;
  22. import java.io.FileWriter;

  23. public class Ch100 implements ActionListener{
  24.         
  25.         String title="My Editor";
  26.         JFrame fm,fm2;
  27.         JScrollPane sp;
  28.         JTextArea ta;
  29.         ImageIcon ic,ic_cut,ic_exit,ic_new,ic_open,ic_paste,ic_save,ic_copy,ic_selectall,ic_about,ic_developer,ic_size,ic_style,ic_type;
  30.         JMenuBar mb;
  31.         JMenu mn_file,mn_edit,mn_option,mn_help,mn_size,mn_type,mn_style;
  32.         JMenuItem mi_new,mi_open,mi_save,mi_exit,mi_copy,mi_paste,mi_cut,mi_selectall,mi_about;
  33.         JRadioButtonMenuItem rbmi_1[]=new JRadioButtonMenuItem[3];
  34.         JRadioButtonMenuItem rbmi_2[]=new JRadioButtonMenuItem[4];
  35.         JRadioButtonMenuItem rbmi_3[]=new JRadioButtonMenuItem[2];
  36.         ButtonGroup bg_1,bg_2,bg_3;
  37.         JFileChooser fc;
  38.         FileNameExtensionFilter filter1;
  39.         
  40.         void initialize()
  41.         {
  42.                 try {
  43.                         UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
  44.                 } catch (Exception e){}

  45.                 filter1 = new FileNameExtensionFilter("文字文件(*.txt)", "txt");
  46.                
  47.                 fc=new JFileChooser();
  48.                 fc.setFileFilter(filter1);
  49.                
  50.                 ic=new ImageIcon(Ch100.class.getResource("pic/editor.png"));
  51.                 ic_cut=new ImageIcon(Ch100.class.getResource("pic/cut.png"));
  52.                 ic_exit=new ImageIcon(Ch100.class.getResource("pic/exit.png"));
  53.                 ic_new=new ImageIcon(Ch100.class.getResource("pic/new.png"));
  54.                 ic_open=new ImageIcon(Ch100.class.getResource("pic/open.png"));
  55.                 ic_paste=new ImageIcon(Ch100.class.getResource("pic/paste.png"));
  56.                 ic_save=new ImageIcon(Ch100.class.getResource("pic/save.png"));
  57.                 ic_copy=new ImageIcon(Ch100.class.getResource("pic/copy.png"));
  58.                 ic_selectall=new ImageIcon(Ch100.class.getResource("pic/selectall.png"));
  59.                 ic_about=new ImageIcon(Ch100.class.getResource("pic/about.png"));
  60.                 ic_developer=new ImageIcon(Ch100.class.getResource("pic/developer.png"));
  61.                 ic_size=new ImageIcon(Ch100.class.getResource("pic/size.png"));
  62.                 ic_type=new ImageIcon(Ch100.class.getResource("pic/type.png"));
  63.                 ic_style=new ImageIcon(Ch100.class.getResource("pic/style.png"));
  64.                
  65.                 mi_new=new JMenuItem("開新檔案",ic_new);
  66.                 mi_new.addActionListener(this);
  67.                 mi_open=new JMenuItem("開啟舊檔",ic_open);
  68.                 mi_open.addActionListener(this);
  69.                 mi_save=new JMenuItem("儲存檔案",ic_save);
  70.                 mi_save.addActionListener(this);
  71.                 mi_exit=new JMenuItem("結束",ic_exit);
  72.                 mi_exit.addActionListener(this);
  73.                 mi_copy=new JMenuItem("複製",ic_copy);
  74.                 mi_copy.addActionListener(this);
  75.                 mi_paste=new JMenuItem("貼上",ic_paste);
  76.                 mi_paste.addActionListener(this);
  77.                 mi_cut=new JMenuItem("剪下",ic_cut);
  78.                 mi_cut.addActionListener(this);
  79.                 mi_selectall=new JMenuItem("全選",ic_selectall);
  80.                 mi_selectall.addActionListener(this);
  81.                 mi_about=new JMenuItem("關於 My Editor",ic_about);
  82.                 mi_about.addActionListener(this);
  83.                
  84.                 rbmi_1[0]=new JRadioButtonMenuItem("大 (22)");
  85.                 rbmi_1[1]=new JRadioButtonMenuItem("中 (18)",true);
  86.                 rbmi_1[2]=new JRadioButtonMenuItem("小 (14)");
  87.                 bg_1=new ButtonGroup();
  88.                 for(int i=0; i<rbmi_1.length; i++)
  89.                         bg_1.add(rbmi_1[i]);
  90.                
  91.                 rbmi_2[0]=new JRadioButtonMenuItem("一般",true);
  92.                 rbmi_2[1]=new JRadioButtonMenuItem("粗體");
  93.                 rbmi_2[2]=new JRadioButtonMenuItem("斜體");
  94.                 rbmi_2[3]=new JRadioButtonMenuItem("粗體+斜體");
  95.                 bg_2=new ButtonGroup();
  96.                 for(int i=0; i<rbmi_2.length; i++)
  97.                         bg_2.add(rbmi_2[i]);
  98.                         
  99.                 rbmi_3[0]=new JRadioButtonMenuItem("白底黑字",true);
  100.                 rbmi_3[1]=new JRadioButtonMenuItem("黑底白字");
  101.                 bg_3=new ButtonGroup();
  102.                 for(int i=0; i<rbmi_3.length; i++)
  103.                         bg_3.add(rbmi_3[i]);

  104.             
複製代碼

TOP

  1. Ch01(){
  2.                 initialize();
  3.         }
  4.         
  5.         public void actionPerformed(ActionEvent e){
  6.             if(e.getSource()==mi_new){
  7.                 ta.setText("");
  8.                 fm.setTitle(title+" - 未命名");
  9.             }
  10.             else if(e.getSource()==mi_open){
  11.                     int ret=fc.showOpenDialog(null);
  12.                     if(ret==JFileChooser.APPROVE_OPTION){
  13.                             try{
  14.                                     String str;
  15.                                     File fi=fc.getSelectedFile();
  16.                                     BufferedReader br=new BufferedReader(new FileReader(fi.getAbsolutePath()));
  17.                                     ta.setText(br.readLine());
  18.                                     do{
  19.                                             str=br.readLine();
  20.                                             if(str==null)
  21.                                                     break;
  22.                                             ta.append("\n"+str);
  23.                                     }while(true);
  24.                                     br.close();
  25.                                     fm.setTitle(title+" - "+fc.getName(fi));
  26.                             }catch(Exception ex){}            
  27.                     }        
  28.             }
  29.             else if(e.getSource()==mi_save){
  30.                     int ret=fc.showSaveDialog(null);
  31.                     if(ret==JFileChooser.APPROVE_OPTION){
  32.                             try{
  33.                                     File fi=fc.getSelectedFile();
  34.                                     BufferedWriter bw;
  35.                                     String ext=fi.getAbsolutePath().substring(fi.getAbsolutePath().length()-4);   //file extension 副檔名
  36.                                     System.out.println(ext);
  37.                                     String fiPath="";
  38.                                     if(fc.getFileFilter()==filter1){
  39.                                             if(ext.equals(".txt"))
  40.                                                     fiPath=fi.getAbsolutePath();
  41.                                             else
  42.                                                     fiPath=fi.getAbsolutePath()+".txt";        
  43.                                     }               
  44.                                     else
  45.                                             fiPath=fi.getAbsolutePath();
  46.                                             bw=new BufferedWriter(new FileWriter(fiPath));                     
  47.                                 bw.write(ta.getText().replaceAll("\n", "\r\n"));
  48.                                 bw.flush();
  49.                                 bw.close();
  50.                                 fm.setTitle(title+" - "+fc.getName(fi));         
  51.                     }catch(Exception ex){}
  52.                                 }        
  53.             }
  54.             else if(e.getSource()==mi_exit)
  55.                 System.exit(0);
  56.             else if(e.getSource()==mi_copy)
  57.                 ta.copy();
  58.             else if(e.getSource()==mi_paste)
  59.                 ta.paste();
  60.             else if(e.getSource()==mi_cut)
  61.                     ta.cut();
  62.             else if(e.getSource()==mi_selectall)
  63.                     ta.selectAll();
  64.             else if(e.getSource() == mi_about){
  65.                     String msg="本軟體由社團法人高雄市資訊培育協會青少年程式設計班學員\n李允軒所開發,感謝您的使用!";
  66.                 JOptionPane.showMessageDialog(fm,msg,"關於 My Editor",JOptionPane.INFORMATION_MESSAGE,ic_developer);
  67.             }
  68.         }
  69.     public static void main(String[] args){
  70.             new Ch01();
  71.     }
  72. }
複製代碼
回復 5# 李允軒
كخخخخخخخخخخخخخ

TOP

  1. import java.awt.Font;
  2. import javax.swing.*;
  3. import javax.swing.border.BevelBorder;
  4. import javax.swing.filechooser.FileNameExtensionFilter;
  5. import java.awt.event.*;
  6. import java.io.*;

  7. public class Ch01 implements ActionListener{
  8.         
  9.     String title="My Editor";
  10.     JFrame fm;
  11.     JScrollPane sp;
  12.     JTextArea ta;
  13.     ImageIcon ic,ic_cut,ic_exit,ic_new,ic_open,ic_size,ic_type,ic_style,ic_about,ic_developer,ic_paste,ic_save,ic_copy,ic_selectall;
  14.     JMenuBar mb;
  15.     JMenu mn_file,mn_edit,mn_help,mn_size,mn_type,mn_style,mn_option;
  16.     JMenuItem mi_new,mi_open,mi_save,mi_exit,mi_copy,mi_paste,mi_cut,mi_selectall,mi_about;
  17.     JFileChooser fc;
  18.     JRadioButtonMenuItem rbmi_1[]=new JRadioButtonMenuItem[3];
  19.     JRadioButtonMenuItem rbmi_2[]=new JRadioButtonMenuItem[4];
  20.     JRadioButtonMenuItem rbmi_3[]=new JRadioButtonMenuItem[2];
  21.     ButtonGroup bg_1,bg_2,bg_3;
  22.     FileNameExtensionFilter filter1,filter2;
  23.    
  24.         
  25.     void initialize(){
  26.         try {
  27.                 UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
  28.         } catch (Exception e){}
  29.         
  30.         filter1=new FileNameExtensionFilter("純文字文件","txt");
  31.         
  32.         fc=new JFileChooser();
  33.         fc.addChoosableFileFilter(filter1);
  34.         fc.setFileFilter(filter1);   
  35.         
  36.         ic=new ImageIcon(Ch01.class.getResource("pic/editor.png"));
  37.         ic_cut=new ImageIcon(Ch01.class.getResource("pic/cut.png"));
  38.         ic_exit=new ImageIcon(Ch01.class.getResource("pic/exit.png"));
  39.         ic_new=new ImageIcon(Ch01.class.getResource("pic/new.png"));
  40.         ic_open=new ImageIcon(Ch01.class.getResource("pic/open.png"));
  41.         ic_paste=new ImageIcon(Ch01.class.getResource("pic/paste.png"));
  42.         ic_save=new ImageIcon(Ch01.class.getResource("pic/save.png"));
  43.         ic_copy=new ImageIcon(Ch01.class.getResource("pic/copy.png"));
  44.         ic_selectall=new ImageIcon(Ch01.class.getResource("pic/selectall.png"));
  45.         ic_about=new ImageIcon(Ch01.class.getResource("pic/about.png"));
  46.         ic_developer=new ImageIcon(Ch01.class.getResource("pic/developer.png"));
  47.         ic_size=new ImageIcon(Ch01.class.getResource("pic/size.png"));
  48.         ic_style=new ImageIcon(Ch01.class.getResource("pic/style.png"));
  49.         ic_type=new ImageIcon(Ch01.class.getResource("pic/type.png"));
  50.         
  51.         mi_new=new JMenuItem("開新檔案",ic_new);
  52.         mi_new.addActionListener(this);
  53.         mi_open=new JMenuItem("開啟舊檔",ic_open);
  54.         mi_open.addActionListener(this);
  55.         mi_save=new JMenuItem("儲存檔案",ic_save);
  56.         mi_save.addActionListener(this);
  57.         mi_exit=new JMenuItem("結束",ic_exit);
  58.         mi_exit.addActionListener(this);
  59.         mi_copy=new JMenuItem("複製",ic_copy);
  60.         mi_copy.addActionListener(this);
  61.         mi_paste=new JMenuItem("貼上",ic_paste);
  62.         mi_paste.addActionListener(this);
  63.         mi_cut=new JMenuItem("剪下",ic_cut);
  64.         mi_cut.addActionListener(this);
  65.         mi_selectall=new JMenuItem("全選",ic_selectall);
  66.         mi_selectall.addActionListener(this);
  67.         mi_about=new JMenuItem("關於 My Editor",ic_about);
  68.         mi_about.addActionListener(this);
  69.         
  70.         mn_help=new JMenu(" 關於(H) ");
  71.         mn_help.setMnemonic('H');
  72.         mn_help.add(mi_about);
  73.         
  74.         rbmi_1[0]=new JRadioButtonMenuItem("大 (22)");
  75.         rbmi_1[1]=new JRadioButtonMenuItem("中 (18)",true);
  76.         rbmi_1[2]=new JRadioButtonMenuItem("小 (14)");
  77.         bg_1=new ButtonGroup();
  78.         for(int i=0; i<rbmi_1.length; i++)
  79.                 bg_1.add(rbmi_1[i]);
  80.         
  81.         rbmi_2[0]=new JRadioButtonMenuItem("一般",true);
  82.         rbmi_2[1]=new JRadioButtonMenuItem("粗體");
  83.         rbmi_2[2]=new JRadioButtonMenuItem("斜體");
  84.         rbmi_2[3]=new JRadioButtonMenuItem("粗體+斜體");
  85.         bg_2=new ButtonGroup();
  86.         for(int i=0; i<rbmi_2.length; i++)
  87.                 bg_2.add(rbmi_2[i]);
  88.                
  89.         rbmi_3[0]=new JRadioButtonMenuItem("白底黑字",true);
  90.         rbmi_3[1]=new JRadioButtonMenuItem("黑底白字");
  91.         bg_3=new ButtonGroup();
  92.         for(int i=0; i<rbmi_3.length; i++)
  93.                 bg_3.add(rbmi_3[i]);
  94.         
  95.         mn_size=new JMenu("文字大小");
  96.         mn_size.setIcon(ic_size);
  97.         for(int i=0; i<rbmi_1.length; i++)
  98.                 mn_size.add(rbmi_1[i]);
  99.         mn_type=new JMenu("文字樣式");
  100.         mn_type.setIcon(ic_type);
  101.         for(int i=0; i<rbmi_2.length; i++)
  102.                 mn_type.add(rbmi_2[i]);
  103.         mn_style=new JMenu("風格");
  104.         mn_style.setIcon(ic_style);
  105.         for(int i=0; i<rbmi_3.length; i++)
  106.                 mn_style.add(rbmi_3[i]);
  107.         
  108.         mn_option=new JMenu(" 設定(O) ");
  109.         mn_option.setMnemonic('O');
  110.         mn_option.add(mn_size);
  111.         mn_option.add(mn_type);
  112.         mn_option.addSeparator();
  113.         mn_option.add(mn_style);
  114.         
  115.         mn_file=new JMenu(" 檔案(F) ");
  116.         mn_file.setMnemonic('F');     
  117.         mn_file.add(mi_new);
  118.         mn_file.add(mi_open);
  119.         mn_file.add(mi_save);
  120.         mn_file.addSeparator();   
  121.         mn_file.add(mi_exit);
  122.         
  123.         mn_edit=new JMenu(" 編輯(E) ");
  124.         mn_edit.setMnemonic('E');     
  125.         mn_edit.add(mi_copy);
  126.         mn_edit.add(mi_paste);
  127.         mn_edit.add(mi_cut);
  128.         mn_edit.addSeparator();
  129.         mn_edit.add(mi_selectall);
  130.         
  131.         mb=new JMenuBar();
  132.         mb.setBorder(new BevelBorder(BevelBorder.RAISED));
  133.         mb.add(mn_file);
  134.         mb.add(mn_edit);
  135.         mb.add(mn_option);
  136.         mb.add(mn_help);
  137.         
  138.         
  139.         
  140.         ta=new JTextArea();
  141.         ta.setFont(new Font("新細明體", Font.PLAIN, 18));
  142.         ta.setLineWrap(true);     
  143.         
  144.         sp=new JScrollPane(ta);
  145.         
  146.         fm=new JFrame(title+" - 未命名");
  147.         fm.setBounds(100, 100, 500, 350);
  148.         fm.setIconImage(ic.getImage());
  149.         fm.setVisible(true);
  150.         fm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  151.         fm.add(sp);
  152.         fm.setJMenuBar(mb);
  153.     }
複製代碼
كخخخخخخخخخخخخخ

TOP

(下半)
  1. public void actionPerformed(ActionEvent e)
  2.         {
  3.                 if(e.getSource()==mi_new)
  4.                 {
  5.                     ta.setText("");
  6.                     fm.setTitle(title+" - 未命名");
  7.                 }
  8.                 else if(e.getSource()==mi_open)
  9.                 {
  10.                         int ret=fc.showOpenDialog(null);
  11.                         if(ret==JFileChooser.APPROVE_OPTION)
  12.                         {
  13.                                 try
  14.                                 {
  15.                                         String str;
  16.                                         File fi=fc.getSelectedFile();
  17.                                         BufferedReader br=new BufferedReader(new FileReader(fi.getAbsolutePath()));
  18.                                         ta.setText(br.readLine());
  19.                                         do
  20.                                         {
  21.                                                 str=br.readLine();
  22.                                                 if(str==null)
  23.                                                         break;
  24.                                                 ta.append("\n"+str);
  25.                                         }while(true);
  26.                                         br.close();
  27.                                         fm.setTitle(title+" - "+fc.getName(fi));
  28.                                 }catch(Exception ex){}
  29.                                 
  30.                         }        
  31.                 }
  32.                 else if(e.getSource()==mi_save)
  33.                 {
  34.                         int ret=fc.showSaveDialog(null);
  35.                         if(ret==JFileChooser.APPROVE_OPTION)
  36.                         {
  37.                                 try
  38.                                 {
  39.                                         File fi=fc.getSelectedFile();
  40.                                         BufferedWriter bw;
  41.                                         String ext=fi.getAbsolutePath().substring(fi.getAbsolutePath().length()-4);
  42.                                         System.out.println(ext);
  43.                                         String fiPath="";
  44.                                         if(fc.getFileFilter()==filter1)
  45.                                         {
  46.                                                 if(ext.equals(".txt"))
  47.                                                         fiPath=fi.getAbsolutePath();
  48.                                             else
  49.                                                     fiPath=fi.getAbsolutePath()+".txt";        
  50.                                         }
  51.                                         else
  52.                                                 fiPath=fi.getAbsolutePath();
  53.                                         bw=new BufferedWriter(new FileWriter(fiPath));
  54.                                        
  55.                                         bw.write(ta.getText().replaceAll("\n", "\r\n"));
  56.                                         bw.flush();
  57.                                         bw.close();
  58.                                         fm.setTitle(title+" - "+fc.getName(fi));
  59.                                 }catch(Exception ex){}
  60.                         }        
  61.                 }
  62.                 else if(e.getSource()==mi_exit)
  63.                         System.exit(0);
  64.                 else if(e.getSource()==mi_copy)
  65.                     ta.copy();
  66.                 else if(e.getSource()==mi_paste)
  67.                         ta.paste();
  68.                 else if(e.getSource()==mi_cut)
  69.             ta.cut();
  70.                 else if(e.getSource()==mi_selectall)
  71.                         ta.selectAll();
  72.                 else if(e.getSource()==mi_about)
  73.                 {
  74.                         String msg="本軟體由社團法人高雄市資訊培育協會青少年程式設計班學員\n林宇翔所開發,感謝您的使用!";
  75.                         JOptionPane.showMessageDialog(fm,msg,"關於 My Editor",JOptionPane.INFORMATION_MESSAGE,ic_developer);
  76.                 }
  77.         }
  78.         public static void main(String[] args) {
  79.                 new Ch07();
  80.         }
  81. }
複製代碼
羽毛神在此

TOP

(上半)
  1. import java.awt.Font;
  2. import javax.swing.*;
  3. import javax.swing.border.BevelBorder;
  4. import javax.swing.filechooser.FileNameExtensionFilter;
  5. import java.awt.event.ActionListener;
  6. import java.awt.event.ActionEvent;
  7. import java.io.*;
  8. public class Ch07 implements ActionListener{
  9.         String title="My Editor";
  10.         JFrame fm,fm2;
  11.         JScrollPane sp;
  12.         JTextArea ta;
  13.         ImageIcon ic,ic_cut,ic_exit,ic_new,ic_open,ic_paste,ic_save,ic_copy,ic_selectall,ic_about,ic_developer,ic_size,ic_style,ic_type;
  14.         JMenuBar mb;
  15.         JMenu mn_file,mn_edit,mn_option,mn_help,mn_size,mn_type,mn_style;
  16.         JMenuItem mi_new,mi_open,mi_save,mi_exit,mi_copy,mi_paste,mi_cut,mi_selectall,mi_about;
  17.         JRadioButtonMenuItem rbmi_1[]=new JRadioButtonMenuItem[3];
  18.         JRadioButtonMenuItem rbmi_2[]=new JRadioButtonMenuItem[4];
  19.         JRadioButtonMenuItem rbmi_3[]=new JRadioButtonMenuItem[2];
  20.         ButtonGroup bg_1,bg_2,bg_3;
  21.         JFileChooser fc;
  22.         FileNameExtensionFilter filter1;        
  23.         void initialize()
  24.         {
  25.                 try {
  26.                         UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
  27.                 } catch (Exception e){}
  28.                 filter1 = new FileNameExtensionFilter("文字文件(*.txt)", "txt");
  29.                 fc=new JFileChooser();
  30.                 fc.setFileFilter(filter1);
  31.                 ic=new ImageIcon(Ch07.class.getResource("pic/editor.png"));
  32.                 ic_cut=new ImageIcon(Ch07.class.getResource("pic/cut.png"));
  33.                 ic_exit=new ImageIcon(Ch07.class.getResource("pic/exit.png"));
  34.                 ic_new=new ImageIcon(Ch07.class.getResource("pic/new.png"));
  35.                 ic_open=new ImageIcon(Ch07.class.getResource("pic/open.png"));
  36.                 ic_paste=new ImageIcon(Ch07.class.getResource("pic/paste.png"));
  37.                 ic_save=new ImageIcon(Ch07.class.getResource("pic/save.png"));
  38.                 ic_copy=new ImageIcon(Ch07.class.getResource("pic/copy.png"));
  39.                 ic_selectall=new ImageIcon(Ch07.class.getResource("pic/selectall.png"));
  40.                 ic_about=new ImageIcon(Ch07.class.getResource("pic/about.png"));
  41.                 ic_developer=new ImageIcon(Ch07.class.getResource("pic/developer.png"));
  42.                 ic_size=new ImageIcon(Ch07.class.getResource("pic/size.png"));
  43.                 ic_type=new ImageIcon(Ch07.class.getResource("pic/type.png"));
  44.                 ic_style=new ImageIcon(Ch07.class.getResource("pic/style.png"));
  45.                 mi_new=new JMenuItem("開新檔案",ic_new);
  46.                 mi_new.addActionListener(this);
  47.                 mi_open=new JMenuItem("開啟舊檔",ic_open);
  48.                 mi_open.addActionListener(this);
  49.                 mi_save=new JMenuItem("儲存檔案",ic_save);
  50.                 mi_save.addActionListener(this);
  51.                 mi_exit=new JMenuItem("結束",ic_exit);
  52.                 mi_exit.addActionListener(this);
  53.                 mi_copy=new JMenuItem("複製",ic_copy);
  54.                 mi_copy.addActionListener(this);
  55.                 mi_paste=new JMenuItem("貼上",ic_paste);
  56.                 mi_paste.addActionListener(this);
  57.                 mi_cut=new JMenuItem("剪下",ic_cut);
  58.                 mi_cut.addActionListener(this);
  59.                 mi_selectall=new JMenuItem("全選",ic_selectall);
  60.                 mi_selectall.addActionListener(this);
  61.                 mi_about=new JMenuItem("關於 My Editor",ic_about);
  62.                 mi_about.addActionListener(this);
  63.                 rbmi_1[0]=new JRadioButtonMenuItem("大 (22)");
  64.                 rbmi_1[1]=new JRadioButtonMenuItem("中 (18)",true);
  65.                 rbmi_1[2]=new JRadioButtonMenuItem("小 (14)");
  66.                 bg_1=new ButtonGroup();
  67.                 for(int i=0; i<rbmi_1.length; i++)
  68.                         bg_1.add(rbmi_1[i]);
  69.                 rbmi_2[0]=new JRadioButtonMenuItem("一般",true);
  70.                 rbmi_2[1]=new JRadioButtonMenuItem("粗體");
  71.                 rbmi_2[2]=new JRadioButtonMenuItem("斜體");
  72.                 rbmi_2[3]=new JRadioButtonMenuItem("粗體+斜體");
  73.                 bg_2=new ButtonGroup();
  74.                 for(int i=0; i<rbmi_2.length; i++)
  75.                         bg_2.add(rbmi_2[i]);      
  76.                 rbmi_3[0]=new JRadioButtonMenuItem("白底黑字",true);
  77.                 rbmi_3[1]=new JRadioButtonMenuItem("黑底白字");
  78.                 bg_3=new ButtonGroup();
  79.                 for(int i=0; i<rbmi_3.length; i++)
  80.                         bg_3.add(rbmi_3[i]);
  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.                 mn_edit=new JMenu(" 編輯(E) ");
  89.                 mn_edit.setMnemonic('E');
  90.                 mn_edit.add(mi_copy);
  91.                 mn_edit.add(mi_paste);
  92.                 mn_edit.add(mi_cut);
  93.                 mn_edit.addSeparator();
  94.                 mn_edit.add(mi_selectall);
  95.                 mn_size=new JMenu("文字大小");
  96.                 mn_size.setIcon(ic_size);
  97.                 for(int i=0; i<rbmi_1.length; i++)
  98.                         mn_size.add(rbmi_1[i]);
  99.                 mn_type=new JMenu("文字樣式");
  100.                 mn_type.setIcon(ic_type);
  101.                 for(int i=0; i<rbmi_2.length; i++)
  102.                         mn_type.add(rbmi_2[i]);
  103.                 mn_style=new JMenu("風格");
  104.                 mn_style.setIcon(ic_style);
  105.                 for(int i=0; i<rbmi_3.length; i++)
  106.                         mn_style.add(rbmi_3[i]);
  107.                 mn_option=new JMenu(" 設定(O) ");
  108.                 mn_option.setMnemonic('O');
  109.                 mn_option.add(mn_size);
  110.                 mn_option.add(mn_type);
  111.                 mn_option.addSeparator();
  112.                 mn_option.add(mn_style);
  113.                 mn_help=new JMenu(" 說明(H) ");
  114.                 mn_help.setMnemonic('H');
  115.                 mn_help.add(mi_about);
  116.                 mb=new JMenuBar();
  117.                 mb.setBorder(new BevelBorder(BevelBorder.RAISED));
  118.                 mb.add(mn_file);
  119.                 mb.add(mn_edit);
  120.                 mb.add(mn_option);
  121.                 mb.add(mn_help);
  122.                 ta=new JTextArea();
  123.                 ta.setFont(new Font("新細明體", Font.PLAIN, 18));
  124.                 ta.setLineWrap(true);      
  125.                 sp=new JScrollPane(ta);
  126.                 fm=new JFrame(title+" - 未命名");
  127.                 fm.setBounds(100, 100, 500, 350);
  128.                 fm.setIconImage(ic.getImage());
  129.                 fm.setVisible(true);
  130.                 fm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  131.                 fm.add(sp);
  132.                 fm.setJMenuBar(mb);
  133.         }
  134.         
  135.         Ch07()
  136.         {
  137.                 initialize();
  138.         }
  139.         
複製代碼
羽毛神在此

TOP

  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 Ch09 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,size,font,style,settings;
  21.         JRadioButtonMenuItem rbmi[][]=new JRadioButtonMenuItem[3][];
  22.         ButtonGroup bg[]=new ButtonGroup[3];
  23.         JFileChooser fc;
  24.         FileNameExtensionFilter filter1,filter2;
  25.         String title="MyEditor";
  26.         Ch09()
  27.         {        
  28.                 d=new ImageIcon(Ch09.class.getResource("pic/developer.png"));
  29.             ic=new ImageIcon(Ch09.class.getResource("pic/editor.png"));
  30.             try
  31.             {
  32.                     UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
  33.             }catch(Exception e){}
  34.             fc=new JFileChooser();
  35.             rbmi[0]=new JRadioButtonMenuItem[3];
  36.             rbmi[1]=new JRadioButtonMenuItem[4];
  37.             rbmi[2]=new JRadioButtonMenuItem[2];
  38.             rbmi[0][0]=new JRadioButtonMenuItem("大(22)");
  39.             rbmi[0][1]=new JRadioButtonMenuItem("中(18)",true);
  40.             rbmi[0][2]=new JRadioButtonMenuItem("小(14)");
  41.             rbmi[1][0]=new JRadioButtonMenuItem("Plain",true);
  42.             rbmi[1][1]=new JRadioButtonMenuItem("Bold");
  43.             rbmi[1][2]=new JRadioButtonMenuItem("Italic");
  44.             rbmi[1][3]=new JRadioButtonMenuItem("Bold + Italic");
  45.             rbmi[2][0]=new JRadioButtonMenuItem("白底黑字",true);
  46.             rbmi[2][1]=new JRadioButtonMenuItem("黑底白字");
  47.             for(int i=0;i<3;i++)
  48.                     bg[i]=new ButtonGroup();
  49.             size=new JMenu("size");
  50.             size.setIcon(new ImageIcon(Ch09.class.getResource("pic/size.png")));
  51.             font=new JMenu("font");
  52.             font.setIcon(new ImageIcon(Ch09.class.getResource("pic/type.png")));
  53.             style=new JMenu("style");
  54.             style.setIcon(new ImageIcon(Ch09.class.getResource("pic/style.png")));
  55.             for(int i=0;i<3;i++)
  56.                     for(int j=0;j<rbmi[i].length;j++)
  57.                             bg[i].add(rbmi[i][j]);
  58.             for(int i=0;i<rbmi[0].length;i++)
  59.                     size.add(rbmi[0][i]);
  60.             for(int i=0;i<rbmi[1].length;i++)
  61.                     font.add(rbmi[1][i]);
  62.             for(int i=0;i<rbmi[2].length;i++)
  63.                     style.add(rbmi[2][i]);
  64.             for(int i=0;i<9;i++)
  65.             {
  66.                     mi[i]=new JMenuItem(name[i],new ImageIcon(Ch09.class.getResource("pic/"+name[i]+".png")));
  67.             }
  68.             fl=new JMenu("檔案(F)");   
  69.             ed=new JMenu("編輯(E)");
  70.             settings=new JMenu("設定(O)");
  71.             h=new JMenu("說明(H)");
  72.             fl.setMnemonic('F');
  73.             ed.setMnemonic('E');
  74.             settings.setMnemonic('O');
  75.             h.setMnemonic('H');
  76.             settings.add(size);
  77.             settings.add(font);
  78.             settings.add(style);
  79.             filter1=new FileNameExtensionFilter("純文字", "txt");
  80.             filter2=new FileNameExtensionFilter("圖片檔", "jpg","png","bmp");
  81.             fc.addChoosableFileFilter(filter1);
  82.             fc.addChoosableFileFilter(filter2);
  83.             fc.setFileFilter(filter1);
  84.             for(int i=0;i<3;i++)
  85.             {
  86.                     mi[i].addActionListener(this);
  87.                     fl.add(mi[i]);
  88.             }
  89.             fl.addSeparator();
  90.             mi[3].addActionListener(this);
  91.             fl.add(mi[3]);
  92.             for(int i=4;i<7;i++)
  93.             {
  94.                     mi[i].addActionListener(this);
  95.                     ed.add(mi[i]);                                
  96.             }
  97.             mi[8].addActionListener(this);
  98.             h.add(mi[8]);
  99.             ed.addSeparator();
  100.             ed.add(mi[7]);
  101.             mi[7].addActionListener(this);
  102.             mb=new JMenuBar();
  103.             mb.setBorder(new BevelBorder(BevelBorder.RAISED));
  104.             mb.add(fl);
  105.             mb.add(ed);
  106.             mb.add(settings);
  107.             mb.add(h);
  108.             t=new JTextArea();
  109.             t.setLineWrap(true);
  110.             t.setFont(new Font("新細明體",Font.PLAIN,15));
  111.             s=new JScrollPane(t);
  112.             f=new JFrame(title+" 未命名");
  113.             f.setBounds(100,100,400,300);
  114.             f.setIconImage(ic.getImage());
  115.             f.setResizable(true);
  116.             f.setVisible(true);
  117.             f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  118.             f.add(s);
  119.             f.setJMenuBar(mb);
  120.         }
  121.         public void actionPerformed(ActionEvent e)
  122.         {        
  123.                 if(e.getSource()==mi[0])
  124.                 {
  125.                         t.setText("");
  126.                         f.setTitle(title+" 未命名");
  127.                 }
  128.                 else if(e.getSource()==mi[3])
  129.                         System.exit(0);
  130.                 else if(e.getSource()==mi[4])
  131.                 {
  132.                         t.copy();
  133.                 }
  134.                 else if(e.getSource()==mi[5])
  135.                 {
  136.                         t.paste();
  137.                 }
  138.                 else if(e.getSource()==mi[6])
  139.                 {
  140.                         t.cut();
  141.                 }
  142.                 else if(e.getSource()==mi[7])
  143.                 {
  144.                         t.selectAll();
  145.                 }
  146.                 else if(e.getSource()==mi[2])
  147.                 {
  148.                     int r=fc.showSaveDialog(null);
  149.                     File fi=fc.getSelectedFile();
  150.                     String fPath=fi.getAbsolutePath();
  151.                     String ext=fi.getAbsolutePath().substring(fi.getAbsolutePath().length()-4);
  152.                     if(r==JFileChooser.APPROVE_OPTION)
  153.                     {
  154.                             System.out.println(ext);
  155.                         if(fc.getFileFilter()==filter1&&!ext.equals(".txt"))
  156.                                 fPath+=".txt";
  157.                         else if(fc.getFileFilter()==filter2&&!ext.equals(".jpg"))
  158.                             fPath+=".jpg";
  159.                         try
  160.                         {
  161.                             BufferedWriter bw=new BufferedWriter(new FileWriter(fPath));
  162.                             bw.write(t.getText().replaceAll("\n","\r\n"));
  163.                             bw.flush();
  164.                             bw.close();
  165.                             f.setTitle(title+" - "+fPath);
  166.                         }
  167.                         catch(Exception ex){}
  168.                     }
  169.                 }
  170.                 else if(e.getSource()==mi[1])
  171.                 {
  172.                         int r=fc.showOpenDialog(null);
  173.                         File fi=fc.getSelectedFile();
  174.                             if(r==JFileChooser.APPROVE_OPTION)
  175.                         {
  176.                                 try
  177.                                 {
  178.                                         BufferedReader br=new BufferedReader(new FileReader(fi.getAbsolutePath()));
  179.                                         t.setText(br.readLine());
  180.                                         while(true)
  181.                                         {
  182.                                                 String s=br.readLine();
  183.                                                 if(s==null)
  184.                                                         break;
  185.                                                 t.append("\n"+s);
  186.                                         }
  187.                                         br.close();                                       
  188.                                 }
  189.                                 catch(Exception ex){}
  190.                         }
  191.                 }
  192.                 else if(e.getSource()==mi[8])
  193.                 {
  194.                         String msg="A";
  195.                                        
  196.                         JOptionPane.showMessageDialog(f,msg,"About",JOptionPane.INFORMATION_MESSAGE);
  197.                 }
  198.         }
  199.         public static void main(String[] arg)
  200.         {
  201.                 new Ch09();
  202.         }
  203. }
複製代碼

TOP

返回列表