zoukankan      html  css  js  c++  java
  • java 学习 ——文本编辑框小程序

    简易的文本编辑框小程序:

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.io.*;
    class TextEditorFrame extends JFrame{
    	
       File file=null;
       Color color=Color.red;
        
       TextEditorFrame(){
    	   
    	   initTextPane();
    	   initAboutDialog();
    	   initToolBar();
    	   initMenu();
       }
       
       void initTextPane(){
    	   
    	   getContentPane().add(new JScrollPane(text));
       }
        
        JTextPane text=new JTextPane(); //这是用来做文本框的
        JFileChooser filechooser=new JFileChooser(); //文件选择框
        JColorChooser colorchooser=new JColorChooser();//
        JDialog about=new JDialog(this); //关于对话框
        JMenuBar menubar=new JMenuBar();//菜单
               
       
        JMenu[] menus=new JMenu[]{
        		
        	new JMenu("文件"),
        	new JMenu("编辑"),
        	new JMenu("帮助")
        };
    
        JMenuItem menuitems[][]=new JMenuItem[][]{{
    	
    			new JMenuItem("新建"),
    			new JMenuItem("打开"),
    			new JMenuItem("保存"),
    			new JMenuItem("退出")
    		},         
    		{
    			new JMenuItem("复制"),         
    			new JMenuItem("剪切"),
    			new JMenuItem("粘贴"),
    		},
    		{
    			new JMenuItem("关于")
    		}
        };
         void initMenu(){
          
            for(int i=0;i<menus.length;i++){
            	
            	menubar.add(menus[i]);
            	for(int j=0;j<menuitems[i].length;j++){
            		
            		menus[i].add(menuitems[i][j]);
            		menuitems[i][j].addActionListener( action );
            	}
            }
            this.setJMenuBar(menubar);
         } 
         
        ActionListener action=new ActionListener(){ 
    
        	public void actionPerformed(ActionEvent e){
        		
        		JMenuItem mi=(JMenuItem)e.getSource();
        		String id=mi.getText();
        		if(id.equals("新建")){
        			
        			text.setText("");
        			file=null;
        		}else if(id.equals("打开")){
        			
        			if(file !=null)filechooser.setSelectedFile(file);
                    int returnVal=filechooser.showOpenDialog(TextEditorFrame.this);
                    if(returnVal==JFileChooser.APPROVE_OPTION){
    
                       file=filechooser.getSelectedFile();
                       openFile();
                    }
        		}else if(id.equals("保存")){
        			
        			if(file!=null) filechooser.setSelectedFile(file);
        			int returnVal=filechooser.showSaveDialog(TextEditorFrame.this);
        			if(returnVal==JFileChooser.APPROVE_OPTION){
        				
        				file=filechooser.getSelectedFile();
        				saveFile();
        			}
                }else if(id.equals("退出")){
                	
                	TextEditorFrame f=new TextEditorFrame();
                	int s=JOptionPane.showConfirmDialog(f,"你真的要退出吗","退出程序",JOptionPane.YES_NO_CANCEL_OPTION);
                	if(s==JOptionPane.YES_OPTION)
                		System.exit(0);
                }else if(id.equals("剪切")){
                	
                	text.cut();
                }else if(id.equals("复制")){
                	
                	text.copy();
                }else if(id.equals("粘贴")){
                	
                	text.paste();
                }else if(id.equals("关于")){
                	
                 about.setSize(300,250);
                 about.show();
                }
       
        	} 
    
        }; 
    
    
        void saveFile(){
        	
        	try{
        		FileWriter fw=new FileWriter(file);
        		fw.write(text.getText());
        		fw.close();
        	}
        	catch(Exception e){
        		e.printStackTrace();
        	}
        }                
     
        void openFile(){
        	
            try{
                 FileReader fr=new FileReader(file);
                 int len=(int)file.length();
                 char []buffer=new char[len];
                 fr.read(buffer,0,len);
                 fr.close();
                 text.setText(new String(buffer));
                 }
            catch(Exception e){
            	e.printStackTrace();
            }
          }
     
        void initAboutDialog(){
        	
        	about.getContentPane().add(new JLabel("You have been making great progress."));
        	about.setModal(true);
          }
        
       JToolBar toolbar=new JToolBar();//我来加上工具条
       JButton [] buttons=new JButton[]{
        		   
            new JButton("", new ImageIcon("qin.jpg")),
            new JButton("", new ImageIcon("shu.jpg")),
            new JButton("", new ImageIcon("xin.jpg"))
        };
     
    	void initToolBar(){
    	   
    	   for(int i=0;i<buttons.length;i++)
    		   toolbar.add(buttons[i]);
    	   buttons[0].setToolTipText("复制");
           buttons[0].addActionListener(new ActionListener(){
        	   
        	   public void actionPerformed(ActionEvent e){
        		   
                 text.copy();
        	   }
           });
        buttons[1].setToolTipText("剪切");      
        buttons[1].addActionListener(new ActionListener(){
        	
              public void actionPerformed(ActionEvent e){
            	  
                 text.cut();
              }
        });
    
        buttons[2].setToolTipText("粘贴");
    	buttons[2].addActionListener(new ActionListener(){
    		
              public void actionPerformed(ActionEvent e){
            	  
                 text.paste();
              }
      });
    
    
    	this.getContentPane().add(toolbar,BorderLayout.NORTH);
    	}
    }   
     
     
    
    public class F{
    	public static void main(String args[]){
      
    		TextEditorFrame f=new TextEditorFrame();
                   
    		f.addWindowListener(new WindowAdapter(){
    			
    			public void windowClosing(WindowEvent e){
    				
    				TextEditorFrame f=new TextEditorFrame();
    				int s=JOptionPane.showConfirmDialog(f,"你真的要退出吗","退出程序",JOptionPane.YES_NO_OPTION);
    				if(s==JOptionPane.YES_OPTION)
    					System.exit(0);}
    		});
                    
    	f.setTitle("TextEditor");
    	f.setSize(800,600);
    	f.show();
    	}
    }
    
    


    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    P3746 [六省联考2017]组合数问题 矩阵乘法
    P3322 [SDOI2015]排序 暴搜
    P2877 [USACO07JAN]Cow School G 斜率优化+分数规划
    P3283 [SCOI2013]火柴棍数字 DP
    AT2005 [AGC003E] Sequential operations on Sequence 单调栈+二分+差分
    CF568C New Language 2-SAT
    P4410 [HNOI2009]无归岛 仙人掌图
    CF505D Mr. Kitayuta's Technology 并查集 拓扑排序
    Algorithms: Design and Analysis, Part 1
    双目测距项目
  • 原文地址:https://www.cnblogs.com/wanglaoda/p/4937112.html
Copyright © 2011-2022 走看看