📄 notepad3.java
字号:
//file name : NotePad3.java
/*package note;*/
import java.io.*;
import java.awt.*;
import java.awt.datatransfer.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.util.*;
import java.text.*;
import javax.swing.border.BevelBorder;
public class NotePad3 extends JFrame implements ActionListener,WindowListener,CaretListener,KeyListener,MouseListener
//继承JFrame类
//同时实现接口ActionListener,WindowListener来检测用户事件,和窗体事件
//CaretListener接口表示文本框有新输入等操作进发生
//..................
{
NotePad3()
{
super("No Tiltle-----NotePad");
setBounds(200,150,550,350); //初始化运行时窗体大小
Text(); //添加记事本程序主体--文本框
MenuBar(); //为窗体添加菜单
ToolBar(); //为窗体添加工具栏
StatusBar(); //为窗体添加状态栏
java.util.Timer timer = new java.util.Timer();
timer.schedule(new java.util.TimerTask()
{
public void run()
{
lab_statusBar3.setText(time()); //调用方法更新状态栏时间
}
}, 0, 1000); //一秒(=1000ms)钟更新一次
Image image1=java.awt.Toolkit.getDefaultToolkit().getImage("pic/icon.gif");
//this.setUndecorated(true);
//this.getRootPane().setWindowDecorationStyle(JRootPane.FRAME); //以上两行设置独特的窗体风格
this.setDefaultLookAndFeelDecorated(true);//获得当前平台窗体风格
this.setIconImage(image1);
this.addWindowListener(this);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
private void Text()
{
//添加文本框,并对其进行设置
text=new JTextPane();
text.setFont(ft);
text.setBorder(BorderFactory.createLineBorder(Color.white));
text.addCaretListener(this);
text.addKeyListener(this);
text.setCaretColor(Color.red); //设置文本框内光标颜色红色
scr=new JScrollPane(text);
this.add(scr,BorderLayout.CENTER);
}
private void StatusBar()
{
//添加状态栏,并设置状态栏
panStatusBar=new JPanel(new GridLayout(1,8));
//label_1.setBorder(new BevelBorder(BevelBorder.RAISED));
//lab_statusBar2=new JLabel("行 "+row+" 列 "+colum+" 字节数: "+text.getText().length(),JLabel.LEFT);
lab_statusBar2=new JLabel(BytesTotal(),JLabel.LEFT); //调用方法:BytesTotal()实现文件字节数统计
lab_statusBar1.setBorder(BorderFactory.createLineBorder(Color.white));
panStatusBar.add(lab_statusBar1);
panStatusBar.add(lab_statusBar2);
panStatusBar.add(lab_statusBar3);
panStatusBar.add(lab_statusBar4);
//PopupMenu(1);
this.getContentPane().add(panStatusBar, BorderLayout.SOUTH);
}
private void MenuBar()
{
//为窗体添加菜单
this.setJMenuBar(menubar);
menu1.add(menuitem11);
menu1.add(menuitem12);
menu1.add(menuitem13);
menu1.add(menuitem14);
menu1.addSeparator();
menu1.add(menuitem15);
menu1.addSeparator();
menu1.add(menuitem16);
menu2.add(menuitem21);
menu2.add(menuitem22);
menu2.addSeparator();
menu2.add(menuitem23);
menu2.add(menuitem24);
menu2.add(menuitem25);
menu2.add(menuitem26);
menu2.addSeparator();
menu2.add(menuitem27);
menu2.add(menuitem28);
menu2.addSeparator();
menu2.add(menuitem29);
menu3.add(menuitem31);
menu3.add(menuitem32);
menu3.add(menuitem33);
menu4.add(menuitem41);
menu4.add(menuitem42);
menu4.add(menuitem43);
menu4.addSeparator();
menu4.add(menuitem44);
menu4.add(menuitem45);
menu4.addSeparator();
menu4.add(menuitem46);
menu5.add(menuitem51);
menubar.add(menu1);
menubar.add(menu2);
menubar.add(menu3);
menubar.add(menu4);
menubar.add(menu5);
menu1.addMouseListener(this);
menu2.addMouseListener(this);
menu3.addMouseListener(this);
menu4.addMouseListener(this);
menu5.addMouseListener(this);
//给各菜项单添加事件监听
menuitem11.addActionListener(this);
menuitem12.addActionListener(this);
menuitem13.addActionListener(this);
menuitem14.addActionListener(this);
menuitem15.addActionListener(this);
menuitem16.addActionListener(this);
menuitem21.addActionListener(this);
menuitem22.addActionListener(this);
menuitem23.addActionListener(this);
menuitem24.addActionListener(this);
menuitem25.addActionListener(this);
menuitem26.addActionListener(this);
menuitem27.addActionListener(this);
menuitem28.addActionListener(this);
menuitem29.addActionListener(this);
menuitem31.addActionListener(this);
menuitem32.addActionListener(this);
menuitem33.addActionListener(this);
menuitem41.addActionListener(this);
menuitem42.addActionListener(this);
menuitem43.addActionListener(this);
menuitem44.addActionListener(this);
menuitem45.addActionListener(this);
menuitem46.addActionListener(this);
menuitem51.addActionListener(this);
//以下为各菜单项的 快捷键
menuitem11.setAccelerator(KeyStroke.getKeyStroke("ctrl N")); //新建
menuitem12.setAccelerator(KeyStroke.getKeyStroke("ctrl O")); //打开
menuitem13.setAccelerator(KeyStroke.getKeyStroke("ctrl S")); //保存
menuitem14.setAccelerator(KeyStroke.getKeyStroke("ctrl shift S")); //另存为
menuitem15.setAccelerator(KeyStroke.getKeyStroke("ctrl E")); //浏览<-->编辑 模式转换
menuitem16.setAccelerator(KeyStroke.getKeyStroke("ctrl Q")); //退出
menuitem21.setAccelerator(KeyStroke.getKeyStroke("ctrl Z")); //撤销
menuitem22.setAccelerator(KeyStroke.getKeyStroke("ctrl R")); //重复
menuitem23.setAccelerator(KeyStroke.getKeyStroke("ctrl X")); //剪切
menuitem24.setAccelerator(KeyStroke.getKeyStroke("ctrl C")); //复制
menuitem26.setAccelerator(KeyStroke.getKeyStroke("ctrl V")); //粘贴
menuitem29.setAccelerator(KeyStroke.getKeyStroke("ctrl A")); //全选
menuitem41.setAccelerator(KeyStroke.getKeyStroke("ctrl T"));
menu1.setBorder(BorderFactory.createLineBorder(Color.white));
menu2.setBorder(BorderFactory.createLineBorder(Color.white));
menu3.setBorder(BorderFactory.createLineBorder(Color.white));
menu4.setBorder(BorderFactory.createLineBorder(Color.white));
menu5.setBorder(BorderFactory.createLineBorder(Color.white));
}
private void ToolBar()
{
//添加并设置工具栏
Cursor cursor=new Cursor(Cursor.HAND_CURSOR);
bt_new.setToolTipText("新建");
bt_open.setToolTipText("打开");
bt_save.setToolTipText("保存");
bt_expler.setToolTipText("浏览");
bt_back.setToolTipText("撤销");
bt_foward.setToolTipText("重复");
bt_cut.setToolTipText("剪切");
bt_copy.setToolTipText("复制");
bt_paste.setToolTipText("粘贴");
bt_left.setToolTipText("左对齐");
bt_center.setToolTipText("居中");
bt_right.setToolTipText("右对齐");
bt_font.setToolTipText("字体");
bt_color.setToolTipText("颜色");
//以下为设置光标样式
bt_new.setCursor(cursor);
bt_open.setCursor(cursor);
bt_save.setCursor(cursor);
bt_expler.setCursor(cursor);
bt_back.setCursor(cursor);
bt_foward.setCursor(cursor);
bt_cut.setCursor(cursor);
bt_copy.setCursor(cursor);
bt_paste.setCursor(cursor);
bt_left.setCursor(cursor);
bt_right.setCursor(cursor);
bt_font.setCursor(cursor);
bt_color.setCursor(cursor);
toolBar=new JToolBar();
toolBar.add(bt_new);
toolBar.add(bt_open);
toolBar.add(bt_save);
toolBar.add(bt_expler);
toolBar.add(bt_split1);
toolBar.add(bt_back);
toolBar.add(bt_foward);
toolBar.add(bt_split2);
toolBar.add(bt_cut);
toolBar.add(bt_copy);
toolBar.add(bt_paste);
toolBar.add(bt_split3);
toolBar.add(bt_left);
toolBar.add(bt_center);
toolBar.add(bt_right);
toolBar.add(bt_split4);
toolBar.add(bt_font);
toolBar.add(bt_color);
bt_split1.setEnabled(false);
bt_split2.setEnabled(false);
bt_split3.setEnabled(false);
bt_split4.setEnabled(false);
bt_new.addActionListener(this);
bt_open.addActionListener(this);
bt_save.addActionListener(this);
bt_expler.addActionListener(this);
bt_back.addActionListener(this);
bt_foward.addActionListener(this);
bt_cut.addActionListener(this);
bt_copy.addActionListener(this);
bt_paste.addActionListener(this);
bt_left.addActionListener(this);
bt_center.addActionListener(this);
bt_right.addActionListener(this);
bt_font.addActionListener(this);
bt_color.addActionListener(this);
toolBar.setBorder(BorderFactory.createLineBorder(Color.white));
toolBar.setVisible(true);
this.add(toolBar,BorderLayout.NORTH);
}
//以下为文本框内的内容发生变化时引发的事件
private String time()
{
//获得系统时间
int h,m,s;
String str,time,hh=null,mm=null,ss=null;
Calendar cal=Calendar.getInstance();
h=cal.get(Calendar.HOUR_OF_DAY);
m=cal.get(Calendar.MINUTE);
s=cal.get(Calendar.SECOND);
if(h<10)
{
hh="0"+ h;
}
else
{
hh=""+h;
}
if(m<10)
{
mm="0"+m;
}
else
{
mm=""+m;
}
if(s<10)
{
ss="0"+s;
}
else
{
ss=""+s;
}
time=hh+":"+mm+":"+ss;
DateFormat d = DateFormat.getDateInstance();
str = d.format(new Date())+" "+time;
return str; //返回当前时间
}
private String BytesTotal()
{
float BytesTotal=text.getText().length();
String total=null;
if(BytesTotal<1024)
{
total=""+BytesTotal+" B";
}
else if(BytesTotal<1024*1024)
{
BytesTotal=BytesTotal/1024;
total=""+BytesTotal+" KB";
}
else
{
BytesTotal=BytesTotal/(1024*1024);
total=""+BytesTotal+" M";
}
return total;
}
private void openFile()
{
//打开文件操作
chooser=new JFileChooser();
chooser.showOpenDialog(this);
path=chooser.getSelectedFile().getPath();
this.setTitle(path);
try
{
BufferedReader bf=new BufferedReader(new FileReader(path));
String strTemp="",str="";
while((strTemp=bf.readLine())!=null)
{
str=str+strTemp+"\n";
}
text.setText(str);
}
catch(IOException io)
{
JOptionPane.showMessageDialog(null,"不能读取此文件");
}
//FileFilter filter = new FileFilter();
//chooser.setFileFilter(filter);
//打开文件后,判断文件类型,设置状态栏的值
if(path.toLowerCase().endsWith(".c"))
{
lab_statusBar4.setText("C Source Code");
}
else if(path.toLowerCase().endsWith(".cpp"))
{
lab_statusBar4.setText("C++ Source Code");
}
else if(path.toLowerCase().endsWith(".java"))
{
lab_statusBar4.setText("Java Source Code");
}
else
{
lab_statusBar4.setText("Default Text");
}
}
private void saveFile()
{
//保存文件操作
chooser=new JFileChooser();
chooser.showSaveDialog(this);
path=chooser.getSelectedFile().getPath();
try
{
BufferedWriter buff=new BufferedWriter(new FileWriter(path));
String str = text.getText();
buff.write(str, 0, text.getText().length());
buff.close();
this.setTitle(path);
}
catch(FileNotFoundException e1)
{
JOptionPane.showMessageDialog(null,"保存失败!");
}
catch(IOException e2)
{
JOptionPane.showMessageDialog(null,"保存失败!");
}
//保存文件后,判断文件类型,设置状态栏的值
if(path.toLowerCase().endsWith(".c"))
{
lab_statusBar4.setText("C Source Code");
}
else if(path.toLowerCase().endsWith(".cpp"))
{
lab_statusBar4.setText("C++ Source Code");
}
else if(path.toLowerCase().endsWith(".java"))
{
lab_statusBar4.setText("Java Source Code");
}
else
{
lab_statusBar4.setText("Default Text");
}
}
/********************************************************************************************/
public void caretUpdate(CaretEvent e)
{
//统计当前文本内有字数
lab_statusBar2.setText(BytesTotal());
}
//以下为窗体操作引发的事件
public void windowOpened(WindowEvent e)
{
}
public void windowClosing(WindowEvent e) //当窗口关闭时检查当前文本是否为空,若为空则提示用户保存当前文档,否则退出当前程序
{
if(text.getText().length()>0) //当文本非空时,做如下处理
{
Object[] options = { "OK", "CANCEL" };
int option=JOptionPane.showOptionDialog(null, "是否保存当前文档", "提示",
JOptionPane.YES_OPTION, JOptionPane.WARNING_MESSAGE,
null, options, options[0]);
if(option==0) //若用户单击了保存,则弹出保存对话框让用户保存当前文档,然后退出当前程序
{
saveFile();
System.exit(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -