返回列表 發帖
  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. 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

返回列表