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

返回列表