📄 jshi.java
字号:
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.io.*;
class Windows extends JFrame implements ActionListener
{
JPopupMenu rmenu;
JMenuBar menubar; //声明菜单项
JToolBar toolbar; //声明工具栏
JMenu menu1,menu2,menu3;//声明三个菜单
JTextArea text=new JTextArea();//声明并创建一个文本框
JFileChooser filechooser;// 声明文件选择对话框
JButton buttonNew,buttonOpen,buttonSave,buttonCut,buttonCopy,buttonPaste;
Icon iconNew,iconOpen,iconSave,iconCut,iconCopy,iconPlaster;
JMenuItem itemNew,itemOpen,itemSave,itemCut,itemCopy,itemPaste,ritemCut,ritemCopy,ritemPaste,itemHelp; //声明子菜单
Windows(String s)
{
super(s);
setSize(500,450);
setLocation(150,150);
setVisible(true);
menubar=new JMenuBar();
Container c=getContentPane();
JPanel panel=new JPanel(new BorderLayout());
c.add(panel);
//////////////////////////// 菜单项 //////////////////////////////////////
menu1=new JMenu("文件");
itemNew=new JMenuItem("新建",new ImageIcon("new.gif"));
itemOpen=new JMenuItem("打开",new ImageIcon("open.gif"));
itemSave=new JMenuItem("保存",new ImageIcon("save.gif"));
rmenu=new JPopupMenu();
ritemCut=new JMenuItem("剪切",new ImageIcon("cut.gif"));
ritemCopy=new JMenuItem("复制",new ImageIcon("copy.gif"));
ritemPaste=new JMenuItem("粘贴",new ImageIcon("plaster.gif"));
rmenu.add(ritemCut);
rmenu.add(ritemCopy);
rmenu.add(ritemPaste);
itemNew.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK));///快捷键
itemOpen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));///快捷键
itemSave.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));///快捷键
menubar.add(menu1);
menu1.add(itemNew);
menu1.add(itemOpen);
menu1.addSeparator();// 将一个分隔线添加到菜单的当前位置
menu1.add(itemSave);
menu2=new JMenu("编辑");
itemCut=new JMenuItem("剪切",new ImageIcon("cut.gif"));
itemCopy=new JMenuItem("复制",new ImageIcon("copy.gif"));
itemPaste=new JMenuItem("粘贴",new ImageIcon("plaster.gif"));
itemCut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK));
itemCopy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));
itemPaste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK));
menubar.add(menu2);
menu2.add(itemCut);
menu2.add(itemCopy);
menu2.add(itemPaste);
menu3=new JMenu("帮助");
itemHelp=new JMenuItem("帮助主题");
menu3.add(itemHelp);
menubar.add(menu3);
setJMenuBar(menubar);
text.addMouseListener(new MouseAdapter()
{
public void mousePressed(MouseEvent e)
{
if(e.getModifiers()==InputEvent.BUTTON3_MASK)
{
rmenu.show(text,e.getX(),e.getY());
}
}
}
);////////右击弹出菜单
itemNew.addActionListener(this); ////监听器
itemOpen.addActionListener(this); ////监听器
itemSave.addActionListener(this); ////监听器
itemCut.addActionListener(this); ////监听器
itemCopy.addActionListener(this); ////监听器
itemPaste.addActionListener(this); ////监听器
itemHelp.addActionListener(this); ////监听器
ritemCut.addActionListener(this); ////监听器
ritemCopy.addActionListener(this); ////监听器
ritemPaste.addActionListener(this); ////监听器
///////////////////////// 工具栏 //////////////////////////////////////
toolbar=new JToolBar();
toolbar.setFloatable(true);////设置工具栏能否浮动
panel.add(toolbar,BorderLayout.NORTH);
iconNew=new ImageIcon("new.gif");
iconOpen=new ImageIcon("open.gif");
iconSave=new ImageIcon("save.gif");
iconCut=new ImageIcon("cut.gif");
iconCopy=new ImageIcon("copy.gif");
iconPlaster=new ImageIcon("plaster.gif");
buttonNew=new JButton(iconNew);////////将图片加到按钮上去
buttonOpen=new JButton(iconOpen);
buttonSave=new JButton(iconSave);
buttonCut=new JButton(iconCut);
buttonCopy=new JButton(iconCopy);
buttonPaste=new JButton(iconPlaster);
buttonNew.setToolTipText("新建");/////当鼠标移到工具按钮上时提示信息
buttonOpen.setToolTipText("打开");
buttonSave.setToolTipText("保存");
buttonCut.setToolTipText("剪切");
buttonCopy.setToolTipText("复制");
buttonPaste.setToolTipText("粘贴");
buttonNew.addActionListener(this);////以下分别设置监听器
buttonOpen.addActionListener(this);
buttonSave.addActionListener(this);
buttonCut.addActionListener(this);
buttonCopy.addActionListener(this);
buttonPaste.addActionListener(this);
toolbar.add(buttonNew);
toolbar.add(buttonOpen);
toolbar.add(buttonSave);
toolbar.add(buttonCut);
toolbar.add(buttonCopy);
toolbar.add(buttonPaste);
/////////////////////////// 文本区 /////////////////////////////////////////
text.setText("");
text.setLineWrap(true);//////////设置为自动换行
panel.add(text,BorderLayout.CENTER);
panel.add(new JScrollPane(text));////////添加滚动条
filechooser=new JFileChooser("D:\\");//默认路径
filechooser.addActionListener(this); //监听器
c.validate();
validate();
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
public void actionPerformed(ActionEvent e) /////////////监听器事件处理
{
JFrame f=null;//////////对话框是一个新的窗体
File file=null;
String title="帮助信息";///对话框的标题字符串
String message="";
int type=JOptionPane.PLAIN_MESSAGE;//////显示的消息类型:没有使用图标
int result;
if(e.getSource()==itemNew||e.getSource()==buttonNew)//////新建文件
{
Windows win=new Windows("记事本");
win.setLocation(100,100);
win.setVisible(true);
}
else if(e.getSource()==itemOpen||e.getSource()==buttonOpen)//////打开文件
{
String s="";
if(!s.equalsIgnoreCase(text.getText()))///////当文本区不为空打开文件时给出提示
{
message="保存现有文件吗?";
int b=JOptionPane.showConfirmDialog(this,message,"保存文件",JOptionPane.YES_NO_CANCEL_OPTION);
if(b==JOptionPane.YES_OPTION)
{
filechooser.setDialogTitle("保存文件");////对话框的标题
result=filechooser.showSaveDialog(this);
file=null;
String fileName;
if(result==filechooser.APPROVE_OPTION)///选择确认后返回该值
{
file=filechooser.getSelectedFile();//////返回选中的文件
setTitle(file.getName());////////将文件名称加到标题
}
FileOutputStream fileOut=null;
if(file!=null)
{
try{
fileOut=new FileOutputStream(file);
}catch(FileNotFoundException fe){}
String con=text.getText();
try{
fileOut.write(con.getBytes());
}catch(IOException ioe){}
finally{
try{
if(fileOut!=null)
fileOut.close();
}catch(IOException ioe2){}
}
}
filechooser.setApproveButtonText("确定");
filechooser.setDialogTitle("打开文件");
result=filechooser.showOpenDialog(this);/// 弹出一个 "Open File" 文件选择器对话框。
text.setText("");
if(result==JFileChooser.APPROVE_OPTION)///选择确认后返回该值
{
file=filechooser.getSelectedFile();//选择文件
setTitle(file.getName());
}
FileInputStream fileIn;
if(file!=null) //////打开文件
{
try{
fileIn=new FileInputStream(file);
}
catch(FileNotFoundException fe)////当试图打开指定路径名表示的文件失败时,抛出此异常
{
return;
}
int read;
try{
while((read=fileIn.read())!=-1)
{
text.append(String.valueOf((char)read));///将给定文本追加到文档结尾
}
}catch(IOException ioe){}
finally{
try{
if(fileIn!=null)
fileIn.close();
}catch(IOException ioe2){}
}
}
}
else if(b==JOptionPane.NO_OPTION)
{
filechooser.setDialogTitle("打开文件");
result=filechooser.showOpenDialog(this);/// 弹出一个 "Open File" 文件选择器对话框。
text.setText("");
if(result==JFileChooser.APPROVE_OPTION)///选择确认后返回该值
{
file=filechooser.getSelectedFile();//选择文件
setTitle(file.getName());/////将文件名称加到标题
}
FileInputStream fileIn;
if(file!=null) //////打开文件
{
try{
fileIn=new FileInputStream(file);
}
catch(FileNotFoundException fe)////当试图打开指定路径名表示的文件失败时,抛出此异常
{
return;
}
int read;
try{
while((read=fileIn.read())!=-1)
{
text.append(String.valueOf((char)read));///将给定文本追加到文档结尾
}
}catch(IOException ioe){}
finally{
try{
if(fileIn!=null)
fileIn.close();
}catch(IOException ioe2){}
}
}
}
}
else
{
filechooser.setDialogTitle("打开文件");
result=filechooser.showOpenDialog(this);/// 弹出一个 "Open File" 文件选择器对话框。
text.setText("");
if(result==JFileChooser.APPROVE_OPTION)///选择确认后返回该值
{
file=filechooser.getSelectedFile();//选择文件
setTitle(file.getName());/////将文件名称加到标题
}
FileInputStream fileIn;
if(file!=null) //////打开文件
{
try{
fileIn=new FileInputStream(file);
}
catch(FileNotFoundException fe)////当试图打开指定路径名表示的文件失败时,抛出此异常
{
return;
}
int read;
try{
while((read=fileIn.read())!=-1)
{
text.append(String.valueOf((char)read));///将给定文本追加到文档结尾
}
}catch(IOException ioe){}
finally{
try{
if(fileIn!=null)
fileIn.close();
}catch(IOException ioe2){}
}
}
}
}
else if(e.getSource()==itemSave||e.getSource()==buttonSave)/////保存文件
{
filechooser.setDialogTitle("保存文件");////对话框的标题
result=filechooser.showSaveDialog(this);
file=null;
String fileName;
if(result==filechooser.APPROVE_OPTION)///选择确认后返回该值
file=filechooser.getSelectedFile();//////返回选中的文件
FileOutputStream fileOut=null;
if(file!=null)
{
try{
fileOut=new FileOutputStream(file);
}catch(FileNotFoundException fe){}
String con=text.getText();
try{
fileOut.write(con.getBytes());
}catch(IOException ioe){}
finally{
try{
if(fileOut!=null)
fileOut.close();
}catch(IOException ioe2){}
}
}
}
if(e.getSource()==itemCut||e.getSource()==buttonCut||e.getSource()==ritemCut)//剪切
text.cut();
else if(e.getSource()==itemCopy||e.getSource()==buttonCopy||e.getSource()==ritemCopy)//复制
text.copy();
else if(e.getSource()==itemPaste||e.getSource()==ritemPaste||e.getSource()==buttonPaste)//粘贴
text.paste();
else if(e.getSource()==itemHelp)//////帮助对话框
{
message="此文本编辑器是一个用来创建简单文档的文本编辑器!\n作者:陈江娜";
JOptionPane.showMessageDialog(f,message,title,type);
}
}
}
public class Jshi
{
public static void main(String args[])
{
Windows win=new Windows("文本编辑器");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -