返回列表 發帖
  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. }
複製代碼

TOP

返回列表