📄 txt.java
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.io.File;
import javax.swing.filechooser.FileFilter;
import java.io.*;
import javax.swing.undo.*;
public class Txt implements UndoableEditListener {
public JTextArea theArea=null;
JFileChooser fileChooser=null;
JFrame f=null;
File file = null;
UndoableEdit edit;
public void undoableEditHappened(UndoableEditEvent ev){ //这个方法可以获的对编辑器的每个操作
edit=ev.getEdit(); //通过此方法可以实现撤消,关闭窗口前的询问对话框的探出
}
public Txt() {
f=new JFrame("记事本");
Container contentPane=f.getContentPane();
contentPane.setLayout(new BorderLayout() );
contentPane.setBackground(new Color(255,255,255));
theArea=new JTextArea();
contentPane.add(new JScrollPane(theArea),BorderLayout.CENTER);
theArea.getDocument().addUndoableEditListener(this);
JMenuBar MBar=new JMenuBar();
MBar.setOpaque(false); //设置菜单为不透明
JMenu mfile=buildFileMenu(); //添加文件菜单
MBar.add(mfile);
JMenu edit=editFileMenu(); //添加编辑菜单
MBar.add(edit);
JMenu opp=oppFileMenu(); //添加格式菜单
MBar.add(opp);
JMenu view=viewFileMenu(); //添加查看菜单
MBar.add(view);
JMenu help=helpFileMenu(); //添加帮助菜单
MBar.add(help);
contentPane.add(MBar,BorderLayout.NORTH);
f.setSize(350,380);
f.setLocationRelativeTo(null); //窗口居中
f.setVisible(true);
f.show();
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
} );
}
public JMenu buildFileMenu() { //添加菜单的方法
JMenu thefile=new JMenu("文件(F)");
thefile.setMnemonic('F'); //添加快捷键
JMenuItem newf=new JMenuItem("新建(N)");
JMenuItem open=new JMenuItem("打开(O)");
JMenuItem save=new JMenuItem("保存(S)");
JMenuItem asave=new JMenuItem("另存为(A)..");
JMenuItem u=new JMenuItem("页面设计(U...)");
JMenuItem print=new JMenuItem("打印(P...)");
JMenuItem exit=new JMenuItem("退出(X)");
newf.setMnemonic('N');
open.setMnemonic('O');
save.setMnemonic('S');
asave.setMnemonic('A');
u.setMnemonic('U');
print.setMnemonic('P');
exit.setMnemonic('X');
newf.setAccelerator(KeyStroke.getKeyStroke('N',java.awt.Event.CTRL_MASK,false));
open.setAccelerator(KeyStroke.getKeyStroke('O',java.awt.Event.CTRL_MASK,false));
save.setAccelerator(KeyStroke.getKeyStroke('S',java.awt.Event.CTRL_MASK,false));
asave.setAccelerator(KeyStroke.getKeyStroke('A',java.awt.Event.CTRL_MASK,false));
u.setAccelerator(KeyStroke.getKeyStroke('U',java.awt.Event.CTRL_MASK,false));
print.setAccelerator(KeyStroke.getKeyStroke('P',java.awt.Event.CTRL_MASK,false));
exit.setAccelerator(KeyStroke.getKeyStroke('X',java.awt.Event.CTRL_MASK,false));
newf.addActionListener(new ActionListener() { //定义新建文件
public void actionPerformed(ActionEvent e) {
new Txt();
}
} );
class JAVAFileFilter extends FileFilter //定义打开我文件时的类型
{ String ext;
public JAVAFileFilter(String ext){
this.ext=ext;
}
public boolean accept(File file) {
if (file.isDirectory())
return true;
String fileName=file.getName();
int index=fileName.lastIndexOf('.');
if (index>0 && index<fileName.length()-1){
String extension=fileName.substring(index+1).toLowerCase();
if (extension.equals(ext))
return true;
}
return false;
}
public String getDescription(){
if (ext.equals("java"))
return"JAVA Source File (*.java)";
if(ext.equals("class"))
return "JAVA Class File(*.class)";
return "";
}
}
open.addActionListener(new ActionListener() { //添加打开文件的事件处理
public void actionPerformed(ActionEvent e)
{ fileChooser = new JFileChooser("D:\\text");
fileChooser.addChoosableFileFilter(new JAVAFileFilter("class") );
fileChooser.addChoosableFileFilter(new JAVAFileFilter("java") );
int result=fileChooser.showOpenDialog(f);
theArea.setText("");
if (result == JFileChooser.APPROVE_OPTION)
{ theArea.setText("");
file = fileChooser.getSelectedFile();
}
else if(result == JFileChooser.CANCEL_OPTION)
{
}
FileInputStream fileInStream = null;
if(file != null)
{
try{
fileInStream = new FileInputStream(file);
}catch(FileNotFoundException fe){
return;
}
int readbyte;
try {
while( (readbyte = fileInStream.read()) != -1)
{
theArea.append(String.valueOf((char)readbyte));
}
} catch(IOException ioe){
theArea.setText("wnjiacuowu");
}
}
try{
if(fileInStream != null)
fileInStream.close();
}catch(IOException ioe2){}
}
});
save.addActionListener(new ActionListener() { //添加保存文件的事件处理
public void actionPerformed(ActionEvent e)
{
fileChooser = new JFileChooser("D:\\text");
fileChooser.addChoosableFileFilter(new JAVAFileFilter("class") );
fileChooser.addChoosableFileFilter(new JAVAFileFilter("java") );
int result=fileChooser.showSaveDialog(f);
file=null;
String fileName;
if (result==JFileChooser.APPROVE_OPTION)
{ file=fileChooser.getSelectedFile();
}
FileOutputStream fileOutStream=null;
if (file!=null)
{
try{
fileOutStream = new FileOutputStream(file);
}catch(FileNotFoundException fe){
return;
}
String content=theArea.getText();
try {
fileOutStream.write(content.getBytes() );
}
catch(IOException ioe){
theArea.setText("wnjiacuowu");
}
try{
if(fileOutStream != null)
fileOutStream.close();
}catch(IOException ioe2){}
}
}});
asave.addActionListener(new ActionListener() { //添加另存文件的事件处理
public void actionPerformed(ActionEvent e)
{ fileChooser = new JFileChooser("D:\\text");
fileChooser.addChoosableFileFilter(new JAVAFileFilter("class") );
fileChooser.addChoosableFileFilter(new JAVAFileFilter("java") );
int result=fileChooser.showSaveDialog(f);
file=null;
String fileName;
if (result==JFileChooser.APPROVE_OPTION)
{ file=fileChooser.getSelectedFile();
}
FileOutputStream fileOutStream=null;
if (file!=null)
{
try{
fileOutStream = new FileOutputStream(file);
}catch(FileNotFoundException fe){
return;
}
String content=theArea.getText();
try {
fileOutStream.write(content.getBytes() );
}
catch(IOException ioe){
theArea.setText("wnjiacuowu");
}
try{
if(fileOutStream != null)
fileOutStream.close();
}catch(IOException ioe2){}
}
}});
exit.addActionListener(new ActionListener() { //定义退出文件事件处理
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
} );
thefile.add(newf);
thefile.add(open);
thefile.add(save);
thefile.add(asave);
thefile.addSeparator(); //添加分割条
thefile.add(u);
thefile.add(print);
thefile.addSeparator();
thefile.add(exit);
return thefile;
}
public JMenu editFileMenu() {
JMenu thefile=new JMenu("编辑(E)");
thefile.setMnemonic('E'); //添加快捷键
JMenuItem chexiao=new JMenuItem("撤消(U)");
JMenuItem jianqie=new JMenuItem("剪切(T)");
JMenuItem fuzhi=new JMenuItem("复制(C)");
JMenuItem niantie=new JMenuItem("粘贴(P)");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -