📄 textviewer.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 + -