返回列表 發帖
  1. import java.awt.Font;
  2. import java.awt.event.ActionEvent;
  3. import java.awt.event.ActionListener;
  4. import java.io.BufferedReader;
  5. import java.io.BufferedWriter;
  6. import java.io.File;
  7. import java.io.FileNotFoundException;
  8. import java.io.FileReader;
  9. import java.io.FileWriter;
  10. import java.io.IOException;

  11. import javax.swing.ImageIcon;
  12. import javax.swing.JFileChooser;
  13. import javax.swing.JFrame;
  14. import javax.swing.JMenu;
  15. import javax.swing.JMenuBar;
  16. import javax.swing.JMenuItem;
  17. import javax.swing.JOptionPane;
  18. import javax.swing.JScrollPane;
  19. import javax.swing.JTextArea;
  20. import javax.swing.UIManager;
  21. import javax.swing.border.BevelBorder;
  22. import javax.swing.filechooser.FileNameExtensionFilter;


  23. public class Ch04 implements ActionListener{

  24.         JFrame fm;
  25.         JScrollPane sp;
  26.         JTextArea ta;
  27.         JMenuBar mb;
  28.         JMenu mn_file, mn_edit, mn_help;
  29.         JMenuItem mi_new, mi_open, mi_save, mi_exit, mi_copy, mi_paste, mi_cut, mi_selectall, mi_about;
  30.         ImageIcon ic, ii_new, ii_open, ii_save, ii_exit, ii_copy, ii_paste, ii_cut, ii_selectall, ii_about, ii_developer;
  31.         JFileChooser fc;
  32.         FileNameExtensionFilter filter;
  33.        
  34.         Ch04()
  35.         {
  36.                 initialize();
  37.         }

  38.         void initialize()
  39.         {
  40.                 try {
  41.                         UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
  42.                 } catch (Exception e) {}

  43.                 ic=new ImageIcon(Ch04.class.getResource("pic/editor.png"));
  44.                 ii_new=new ImageIcon(Ch04.class.getResource("pic/new.png"));
  45.                 ii_open=new ImageIcon(Ch04.class.getResource("pic/open.png"));
  46.                 ii_save=new ImageIcon(Ch04.class.getResource("pic/save.png"));
  47.                 ii_exit=new ImageIcon(Ch04.class.getResource("pic/exit.png"));
  48.                 ii_copy=new ImageIcon(Ch04.class.getResource("pic/copy.png"));
  49.                 ii_paste=new ImageIcon(Ch04.class.getResource("pic/paste.png"));
  50.                 ii_cut=new ImageIcon(Ch04.class.getResource("pic/cut.png"));
  51.                 ii_selectall=new ImageIcon(Ch04.class.getResource("pic/selectall.png"));
  52.                 ii_about=new ImageIcon(Ch04.class.getResource("pic/about.png"));
  53.         ii_developer=new ImageIcon(Ch04.class.getResource("pic/developer.png"));

  54.                 filter=new FileNameExtensionFilter("純文字檔案", "txt");
  55.                
  56.                 fc=new JFileChooser();
  57.                 fc.addChoosableFileFilter(filter);
  58.                 fc.setFileFilter(filter);

  59.                 mi_new=new JMenuItem("開新檔案",ii_new);
  60.                 mi_new.addActionListener(this);
  61.                 mi_open=new JMenuItem("開啟舊檔",ii_open);
  62.                 mi_open.addActionListener(this);
  63.                 mi_save=new JMenuItem("儲存檔案",ii_save);
  64.                 mi_save.addActionListener(this);
  65.                 mi_exit=new JMenuItem("結束",ii_exit);
  66.                 mi_exit.addActionListener(this);
  67.                 mi_copy=new JMenuItem("複製",ii_copy);
  68.                 mi_copy.addActionListener(this);
  69.                 mi_paste=new JMenuItem("貼上",ii_paste);
  70.                 mi_paste.addActionListener(this);
  71.                 mi_cut=new JMenuItem("剪下",ii_cut);
  72.                 mi_cut.addActionListener(this);
  73.                 mi_selectall=new JMenuItem("全選",ii_selectall);
  74.                 mi_selectall.addActionListener(this);
  75.                 mi_about=new JMenuItem("關於 My Editor",ii_about);
  76.         mi_about.addActionListener(this);

  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.                 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.                 mb=new JMenuBar();
  96.                 mb.setBorder(new BevelBorder(BevelBorder.RAISED));
  97.                 mb.add(mn_file);
  98.                 mb.add(mn_edit);
  99.                 mb.add(mn_help);

  100.                 ta=new JTextArea();
  101.                 ta.setFont(new Font("新細明體", Font.PLAIN, 20));
  102.                 ta.setLineWrap(true);

  103.                 sp=new JScrollPane(ta);

  104.                 fm=new JFrame("My Editor");
  105.                 fm.setIconImage(ic.getImage());
  106.                 fm.setBounds(100, 100, 500, 350);
  107.                 fm.setVisible(true);
  108.                 fm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  109.                 fm.add(sp);
  110.                 fm.setJMenuBar(mb);
  111.         }
  112.         public static void main(String[] args) {
  113.                 new Ch04();

  114.         }

  115.         public void actionPerformed(ActionEvent e) {
  116.                 if(e.getSource()==mi_open)
  117.                 {
  118.                         int ret=fc.showOpenDialog(null);
  119.                         if(ret==JFileChooser.APPROVE_OPTION)
  120.                         {
  121.                                 try {
  122.                                         File fl=fc.getSelectedFile();
  123.                                         BufferedReader br=new BufferedReader(new FileReader(fl.getAbsolutePath()));
  124.                                         String str=br.readLine();
  125.                                         String tmp=br.readLine();
  126.                                         while(tmp!=null)
  127.                                         {
  128.                                                 str+="\r\n";
  129.                                                 str+=tmp;
  130.                                                 tmp=br.readLine();
  131.                                         }
  132.                                         ta.setText(str);
  133.                                         br.close();
  134.                                         fm.setTitle("My Editor - "+fl.getName());
  135.                                 } catch (Exception ex) {}
  136.                         }
  137.                 }
  138.                 if(e.getSource()==mi_save)
  139.                 {
  140.                         int ret=fc.showSaveDialog(null);
  141.                         if(ret==JFileChooser.APPROVE_OPTION)
  142.                         {
  143.                                 try {
  144.                                         File fl=fc.getSelectedFile();
  145.                                         String path="";
  146.                                         if(fl.getAbsolutePath().substring(fl.getAbsolutePath().length()-4).equals(".txt"))
  147.                                         {
  148.                                                 path=fl.getAbsolutePath();
  149.                                                 fm.setTitle("My Editor - "+fl.getName());
  150.                                         }else
  151.                                         {
  152.                                                 path=fl.getAbsolutePath()+".txt";
  153.                                                 fm.setTitle("My Editor - "+fl.getName()+".txt");
  154.                                         }
  155.                                         BufferedWriter bw=new BufferedWriter(new FileWriter(path));
  156.                                         bw.write(ta.getText().replaceAll("\n", "\r\n"));   
  157.                                         bw.flush();
  158.                                         bw.close();
  159.                                 } catch (Exception ex) {}

  160.                         }
  161.                 }
  162.                 if(e.getSource()==mi_new)
  163.                 {
  164.                         ta.setText("");
  165.                         fm.setTitle("My Editor - 未命名");
  166.                 }
  167.                 if(e.getSource()==mi_exit)
  168.                         System.exit(0);
  169.                 if(e.getSource()==mi_copy)
  170.                         ta.copy();
  171.                 if(e.getSource()==mi_paste)
  172.                         ta.paste();
  173.                 if(e.getSource()==mi_cut)
  174.                         ta.cut();
  175.                 if(e.getSource()==mi_selectall)
  176.                         ta.selectAll();
  177.                 if(e.getSource()==mi_about)
  178.         {
  179.                 String msg="本軟體由社團法人高雄市資訊培育協會青少年程式設計班學員\n林宇翔所開發,感謝您的使用!";
  180.                 JOptionPane.showMessageDialog(fm,msg,"關於 My Editor",JOptionPane.INFORMATION_MESSAGE,ii_developer);
  181.         }
  182.         }

  183. }
複製代碼

TOP

返回列表