返回列表 發帖
(上半)
  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. 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

返回列表