⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 textviewer.java

📁 文本编辑器
💻 JAVA
字号:

import javax.swing.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.filechooser.*;

public class TextViewer extends JFrame implements ActionListener{
	private JMenuBar menubar=new JMenuBar();
	private JMenu edit=new JMenu("编辑");
	private JTextArea textarea=new JTextArea();
	private JMenuItem open,save,quit;
	public TextViewer(String title){
		super(title);
		open=new JMenuItem("打开");
		save=new JMenuItem("保存");
		quit=new JMenuItem("退出");
		edit.add(open);
		open.addActionListener(this);
		edit.add(save);
		save.addActionListener(this);
		edit.addSeparator();
		edit.add(quit);
		quit.addActionListener(this);
		menubar.add(edit);
		setJMenuBar(menubar);
		textarea.setEditable(true);
		add(new JScrollPane(textarea));
		pack();
		addWindowListener(new WindowAdapter(){
			public void windowClosing(WindowEvent e){
				setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
				actionPerformed(new ActionEvent(quit,ActionEvent.ACTION_PERFORMED,"退出"));
			}
		});
	}
	public void actionPerformed(ActionEvent ae){
		if(ae.getSource()==open){
			JFileChooser openfile=new JFileChooser();
			String[] plain=new String[]{"txt","doc","diz"};
			String[] java=new String[]{"java"};
			String[] html=new String[]{"html","htm"};
			String[] xml=new String[]{"xml","syn","xsl","vsl"};
			openfile.addChoosableFileFilter(new SimpleFileFilter(plain,"Plain文件(*.txt,*.doc,*.diz)"));
			openfile.addChoosableFileFilter(new SimpleFileFilter(html,"Html文件(*.html,*.htm)"));
			openfile.addChoosableFileFilter(new SimpleFileFilter(xml,"Xml文件(*.xml,*.syn,*.xsl,*.vsl)"));
            openfile.addChoosableFileFilter(new SimpleFileFilter(java,"Java文件(*.java)"));
			if(openfile.showOpenDialog(this)!=JFileChooser.APPROVE_OPTION)
			   return;
			File file=openfile.getSelectedFile();
			if(file==null) return;
			FileReader reader=null;
			try{
				reader=new FileReader(file);
				textarea.read(new BufferedReader(reader),null);
			}
			catch(IOException ex){
				JOptionPane.showMessageDialog(this,"The file is not found","ERROR",JOptionPane.ERROR_MESSAGE);
			}
			finally{ //保证执行
				if(reader!=null){
					try{
						reader.close();
					}
					catch(IOException x){}
				}
			}	
		}
		else if(ae.getSource()==save){
			JFileChooser savefile=new JFileChooser();
			String[] plain=new String[]{"txt","doc","diz"};
			String[] java=new String[]{"java"};
			String[] html=new String[]{"html","htm"};
			String[] xml=new String[]{"xml","syn","xsl","vsl"};
			savefile.addChoosableFileFilter(new SimpleFileFilter(plain,"Plain文件(*.txt,*.doc,*.diz)"));
			savefile.addChoosableFileFilter(new SimpleFileFilter(html,"Html文件(*.html,*.htm)"));
			savefile.addChoosableFileFilter(new SimpleFileFilter(xml,"Xml文件(*.xml,*.syn,*.xsl,*.vsl)"));
            savefile.addChoosableFileFilter(new SimpleFileFilter(java,"Java文件(*.java)"));			
			if(savefile.showSaveDialog(this)!=JFileChooser.APPROVE_OPTION)  
				return;
			File file=savefile.getSelectedFile();
			if(file==null)
				return;
			FileWriter writer=null;
			try{
				writer=new FileWriter(file);
				textarea.write(new BufferedWriter(writer));
			}
			catch(IOException ex){
				JOptionPane.showMessageDialog(this,"Failed to save","ERROR",JOptionPane.ERROR_MESSAGE);	
			}
			finally{
				if(writer!=null){
					try{
						writer.close();
					}
					catch(IOException x){}
				}
			}	
		}
		else if(ae.getSource()==quit){
			int option=JOptionPane.showConfirmDialog(this,"确定退出?","Quit",JOptionPane.YES_NO_OPTION);
			if(option==JOptionPane.YES_OPTION)
				System.exit(0);
			
		}
	}
    class SimpleFileFilter extends javax.swing.filechooser.FileFilter{
		String[] extensions;
		String description;
		public SimpleFileFilter(String ext){
			this(new String[]{ext},null);
		}
		public SimpleFileFilter(String[] exts,String descr){
			extensions=new String[exts.length];
			for(int i=exts.length-1;i>=0;i--){
				extensions[i]=exts[i].toLowerCase();
				description=(descr==null ? exts[0]+" files" : descr);
			}
		}
		public boolean accept(File f){
			if(f.isDirectory())
				return true;
			String name=f.getName().toLowerCase();
			for(int i=extensions.length-1;i>=0;i--){
				if(name.endsWith(extensions[i])){
					return true;
				}
			}
			return false;
		}
		public String getDescription(){
			return description;
		}
	}
	
	public static void main(String argc[]){
		TextViewer textviewer=new TextViewer("TextViewer");
		textviewer.setVisible(true);
	//	textviewer.setDefaultCloseOperation(EXIT_ON_CLOSE);
		textviewer.setBounds(300,250,500,600);
	}
	
	

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -