zoukankan      html  css  js  c++  java
  • Java编写的文本编辑器(菜鸟作品)

    //这是主窗体文件 Wordwin.java
    import javax.swing.*;
    import javax.swing.event.DocumentEvent;
    import javax.swing.event.DocumentListener;
    import java.awt.*;
    import java.io.*;
    import java.awt.event.*;
    public class Wordwin extends JFrame implements DocumentListener {
    	/**
    	 * 
    	 */
    	private static final long serialVersionUID = 1L;
    	JMenuBar menubar=new JMenuBar();
        JMenu file=new JMenu("文件");
        JMenu edit=new JMenu("编辑");
        JMenu geshi=new JMenu("格式");
        JMenu look =new JMenu("查看");
        JMenu help =new JMenu("帮助");
        JTextArea wordArea=new JTextArea();
        JScrollPane imgScrollPane = new JScrollPane(wordArea);
        String [] str1={"新建","打开","保存","另存为","页面设置","打印","退出"};
        String [] str2={"剪切","复制","粘贴","查找","替换"};
        String [] str3={"自动换行","字体"};
        Font f1=new Font("隶书",Font.PLAIN,15);
        Search d1=new Search();
        Font1 z1=new Font1(); 
        Change c1=new Change();
        int flag=0;
        String source="";
        public static void main(String[] args) {
          JFrame wordwin=new Wordwin();
          wordwin.setVisible(true);
    	}
        public Wordwin(){
           c1.set(wordArea);
           z1.set(wordArea);
           setTitle("文本编辑器");
     	   Toolkit kit = Toolkit.getDefaultToolkit();
     	   Dimension screenSize = kit.getScreenSize();//获取屏幕分辨率
     	   setSize(screenSize.width/2,screenSize.height/2);//大小
     	   setLocation(screenSize.width/4,screenSize.height/4);//位置
     	   add(imgScrollPane,BorderLayout.CENTER);
     	   setJMenuBar(menubar);
     	   file.setFont(f1);
     	   edit.setFont(f1);
     	   geshi.setFont(f1);
     	   look.setFont(f1);
     	   help.setFont(f1);
     	   menubar.add(file);
     	   menubar.add(edit);
     	   menubar.add(geshi);
     	   menubar.add(look);
     	   menubar.add(help);
     	   wordArea.getDocument().addDocumentListener(this);
     	   for(int i=0;i<str1.length;i++){
     		  JMenuItem item1= new JMenuItem(str1[i]);
     		  item1.addActionListener(new MyActionListener1());
     		  item1.setFont(f1);
     		  file.add(item1);
     	   }
     	  for(int i=0;i<str2.length;i++){
     		  JMenuItem item2= new JMenuItem(str2[i]);
     		 item2.addActionListener(new MyActionListener1());
     		  item2.setFont(f1);
     		  edit.add(item2);
     	   }
     	 for(int i=0;i<str3.length;i++){
    		  JMenuItem item3= new JMenuItem(str3[i]);
    		  item3.addActionListener(new MyActionListener1());
    		  item3.setFont(f1);
    		  geshi.add(item3);
    	   }
        }
        public void changedUpdate(DocumentEvent e) {
    		flag=1;
    	}
    	
    	public void insertUpdate(DocumentEvent e) {
    		flag=1;
    	}
    	public void removeUpdate(DocumentEvent e) {
    		flag=1;
    	}
        void open(){
        	FileDialog  filedialog=new FileDialog(this,"打开",FileDialog.LOAD);
        	filedialog.setVisible(true);
        	String path=filedialog.getDirectory();
            String name=filedialog.getFile();
            if(path!=null && name!=null){
            	 FileInputStream file = null;
    			try {
    				file = new FileInputStream(path+name);
    			} catch (FileNotFoundException e) {
    				
    			}
            	 InputStreamReader put =new InputStreamReader(file);
            	 BufferedReader in=new BufferedReader(put);
            	 String temp="";
            	  String now = null;
    			try {
    				now = (String)in.readLine();
    			} catch (IOException e) {
    				
    				e.printStackTrace();
    			}
            	  while(now!=null){
            	      temp+=now+"
    ";
            	      try {
    					now=(String)in.readLine();
    				} catch (IOException e) {
    					
    					e.printStackTrace();
    				}
            	       }
    
            	   wordArea.setText(temp);
            }
        	
        }
    
        void save(){
        	FileDialog  filedialog=new FileDialog(this,"保存",FileDialog.SAVE);
        	filedialog.setVisible(true);
        	if(filedialog.getDirectory()!=null && filedialog.getFile()!=null){
        		 OutputStreamWriter out = null;
    			try {
    				out = new OutputStreamWriter(new FileOutputStream(filedialog.getDirectory()+filedialog.getFile()));
    			} catch (FileNotFoundException e) {
    				e.printStackTrace();
    			}
        		 try {
    				out.write(wordArea.getText());
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
        		 flag=0;
        		 try {
    				out.close();
    				source=wordArea.getText();
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
        	}
        }
        void newfile(){
        	if(flag==0){
        		wordArea.setText("");
        	}
        	if(flag==1){
        		int m=  JOptionPane.showConfirmDialog(this,"是否保存该文件");
        		if(m==0){
        			save();
        			wordArea.setText("");
        		}
        		
        		if(m==1){ 
        			//System.exit(0);
        			wordArea.setText("");
        			flag=0;
        			}
        	}
        }
        void exit(){
        	if(flag==0){
        		System.exit(0);
        	}
        	if(flag==1){
        		int m=  JOptionPane.showConfirmDialog(this,"是否保存该文件");
        		if(m==0){
        			save();
        		}
        		if(m==1){ 
        			System.exit(0);
        			}
        	}
        }
        class MyActionListener1 implements ActionListener{
        	public void actionPerformed(ActionEvent e) {
        		if(e.getSource()instanceof JMenuItem){
        			if(e.getActionCommand()=="剪切"){
        				wordArea.cut();
        			}
        			if(e.getActionCommand()=="复制"){
        				wordArea.copy();
        			}
        			if(e.getActionCommand()=="粘贴"){
        				wordArea.paste();
        			}
        			if(e.getActionCommand()=="查找"){
        				d1.setVisible(true);
        			}
        			if(e.getActionCommand()=="字体"){
        				z1.setVisible(true);
        			}
        			if(e.getActionCommand()=="替换"){
        				c1.setVisible(true);
        			}
        			if(e.getActionCommand()=="打开"){
        				open();
        			}
        			if(e.getActionCommand()=="保存"){
        				save();
        			}
        			if(e.getActionCommand()=="新建"){
        				newfile();
        			}
        			if(e.getActionCommand()=="退出"){
        				exit();
        			}
        		}
        		
        	}
        	   
    }
    }

    //这是查找替换的实现Change.java

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    class Change extends JDialog{
    	/**
    	 * 
    	 */
    	private static final long serialVersionUID = 1L;
    	JLabel l1=new JLabel("查找内容");
    	JLabel l2=new JLabel("替换为");
    	JTextField t1=new JTextField(10);
    	JTextField t2=new JTextField(10);
    	JButton b1=new JButton("替换");
    	JButton b2=new JButton("全部替换");
    	JButton b3=new JButton("取消");
    	JTextArea a1=new JTextArea();
    	Font f1=new Font("隶书",Font.PLAIN,15);
    	//int m;
    	void set(JTextArea n){
    		a1=n;
    	}
    	public Change(){
    		setTitle("替换");
    		setSize(500,300);
    		setLocation(200,300);
    		setLayout(new FlowLayout());
    		l1.setFont(f1);
    		l2.setFont(f1);
    		t1.setFont(f1);
    		t2.setFont(f1);
    		b1.setFont(f1);
    		b2.setFont(f1);
    		b3.setFont(f1);
    		add(l1);
    		add(t1);
    		add(l2);
    		add(t2);
    		add(b1);
    		add(b2);
    		add(b3);
    		b1.addActionListener(new MyActionListener3());
    		b2.addActionListener(new MyActionListener3());
    		b3.addActionListener(new MyActionListener3());
    	}
    	class MyActionListener3 implements ActionListener{
    		
    public void actionPerformed(ActionEvent e2) {
    	int m;
    	String source=a1.getText();
    	String find=t1.getText();
    	String change=t2.getText();
    			if(e2.getActionCommand()=="取消"){
    				setVisible(false);
    				t1.setText("");
    				t2.setText("");
    			}
    			if(e2.getActionCommand()=="替换"){
    				m=source.indexOf(find,0);
    				String s1=source.substring(0,m);
    				String s2=source.substring(m+find.length());
    				source=s1+change+s2;
    				if(m==-1){
    					JOptionPane.showMessageDialog(null,"对不起,没找到您要找的内容!");
    				}else{
    					a1.setText(source);
    				}
    			}
    			if(e2.getActionCommand()=="全部替换"){
    				m=-change.length();
    				while(true){
    					m=source.indexOf(find,m+change.length());
    				    if(m==-1)
    				    	break;
    				    else{
    				    String s1=source.substring(0,m);
    					String s2=source.substring(m+find.length());
    					source=s1+change+s2;
    				    }
    				}
    				a1.setText(source);
    			}
    			
    		}
    	}
    	
    }

    //这是改变字体的Font1.java

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    
    public class Font1 extends JDialog implements ItemListener{
    	/**
    	 * 
    	 */
    	private static final long serialVersionUID = 1L;
    	JPanel panel1 = new JPanel();
    	JPanel panel2 = new JPanel();
    	JPanel panel3 = new JPanel();
    	JComboBox comboBox1 = new JComboBox();
    	JComboBox comboBox2 = new JComboBox();
    	JComboBox comboBox3 = new JComboBox();
    	JLabel lab1=new JLabel("字体:");
    	JLabel lab2=new JLabel("字形:");
    	JLabel lab3=new JLabel("字号:");
    	String name=new String("宋体");
    	Font f1=new Font("隶书",Font.PLAIN,15);
    	int style=1;
    	int size=12;
    	String []array2=new String[]{"常       规","倾        斜","加       粗"};
    	String []array3=new String[]{"14","15","15","16","17","18"};
    	GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment();
        String [] fontName=ge.getAvailableFontFamilyNames();
        JButton b1=new JButton("确定");
        JButton b2=new JButton("颜色");
        JTextArea a1=new JTextArea();
        void set(JTextArea n){
    		a1=n;
    	}
    	public Font1(){
    		setTitle("字体");
    		setSize(500,600);
    		setLayout(new FlowLayout());
    		//panel1.setLocation(100, 200);
    		lab1.setFont(f1);
    		lab2.setFont(f1);
    		comboBox1.setModel(new DefaultComboBoxModel(fontName));
    		comboBox1.setFont(f1);
    		for(int i=1;i<fontName.length;i++){
    			//comboBox1.setSelectedIndex(i);
    			comboBox1.setSelectedItem(fontName);
    			//comboBox1.addItem(fontName);
    		}
    		comboBox2.setModel(new DefaultComboBoxModel(array2));
    		comboBox2.setFont(f1);
    		for(int i=1;i<array2.length;i++){
    			//comboBox2.setSelectedIndex(i);
    			comboBox2.setSelectedItem(array2);
    			//comboBox2.addItem(array2);
    		}
    		comboBox3.setModel(new DefaultComboBoxModel(array3));
    		comboBox3.setFont(f1);
    		for(int i=1;i<array3.length;i++){
    			//comboBox2.setSelectedIndex(i);
    			comboBox2.setSelectedItem(array3);
    			//comboBox3.addItem(array3);
    		}
    		
    		panel1.add(lab1);
    		panel1.add(comboBox1);
    		panel2.add(lab2);
    		panel2.add(comboBox2);
    		panel3.add(lab3);
    		panel3.add(comboBox3);
    		panel3.add(b1);
    		panel3.add(b2);
    		b2.addActionListener(new MyActionListener3());
    		comboBox1.addItemListener(this);
    		comboBox2.addItemListener(this);
    		comboBox3.addItemListener(this);
    		b1.addActionListener(new MyActionListener3());
    		add(panel1);
    		add(panel2);
    		add(panel3);
    	}
    		public void itemStateChanged(ItemEvent e) {
    			if(e.getSource()==comboBox1){
    			    name=comboBox1.getSelectedItem().toString();
    			}
    			if(e.getSource()==comboBox2){
    			  String s1=comboBox2.getSelectedItem().toString();
    			  if(s1.equals("加粗")){
    			  style=Font.BOLD;
    			  }
    			  if(s1.equals("倾斜")){
    				  style=Font.ITALIC;
    			  }
    			  if(s1.equals("常规")){
    				  style=Font.PLAIN;
    			  }
    			}
    			if(e.getSource()==comboBox3){
    				 String s2=comboBox3.getSelectedItem().toString();
    				 size=Integer.parseInt(s2);
    			}
    			
    		}
    		
    		class MyActionListener3 implements ActionListener{
    			public void actionPerformed(ActionEvent e2) {
    				Font f=new Font(name,style,size);
    				a1.setFont(f);
    				if(e2.getActionCommand()=="颜色"){
    					setcolor();
    				}
    			}
    		}
    		 void setcolor(){
    			    Color	fontcolor=JColorChooser.showDialog(this,"字体颜色选择",a1.getForeground());
    			    	  a1.setForeground(fontcolor);
    			    }
    	}
    


    //这是查找窗口,对不起,查找功能没实现Search.java

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    
    public class Search extends JDialog{
    	/**
    	 * 
    	 */
    	private static final long serialVersionUID = 1L;
    	JLabel l1=new JLabel("查找内容");
    	JTextField t1=new JTextField(10);
    	JButton b1=new JButton("查找下一个");
    	JButton b2=new JButton("取消");
    	Font f1=new Font("隶书",Font.PLAIN,15);
    	public Search(){
    		setTitle("查找");
    		setSize(300,200);
    		setLayout(new FlowLayout());
    		b1.setFont(f1);
    		b2.setFont(f1);
    		l1.setFont(f1);
    		add(l1);
    		add(t1);
    		add(b1);
    		add(b2);
    		b2.addActionListener(new MyActionListener2());
    	}
    	class MyActionListener2 implements ActionListener{
    		public void actionPerformed(ActionEvent e1) {
    			setVisible(false);
    		}
    		
    	}
    }


    运行截图:




  • 相关阅读:
    CAN Timing Sample Point
    宋体汉字字号和点阵大小对应关系
    有趣的心理测试——借船过河
    有源蜂鸣器与无源蜂鸣器的区别(转)
    VAG DMA protocol
    STM32 USB CAN 学习笔记
    STM32 CANBus RAM Layout
    LPC43XX JTAG Scan Chain
    Multiplexing SDIO Devices Using MAX II or CoolRunner-II CPLD
    LPC43xx SGPIO DMA and Interrupts
  • 原文地址:https://www.cnblogs.com/xiaoduc-org/p/5327259.html
Copyright © 2011-2022 走看看