Java实现简易记事本

Java实现简易记事本

   本程序是模仿Windows自带的记事本,实现了文本文件的打开,保存,新建,编辑,复制,剪切等基本功能。原理比较简单。主要用到了awt包和swing包下的工具类来完成界面的编写和io包中的工具类来进行文件的读写操作。

主要用到的工具类:

JTextPane:用于创建文本窗格,编辑窗口对象

JLabel:用于创建状态栏对象

JFileChooser:用于创建文件选择器对象

JToolBar:用于实例化工具条。

.

.

.

.

.

算了,太多了,代码里都加了注释,话不多说,直接上代码吧



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


public class EditorDemo extends JFrame{
JTextPane textPane = new JTextPane();//文本窗格,编辑窗口
JLabel statusBar = new JLabel();//状态栏
JFileChooser fileChooser = new JFileChooser();//文件选择器
/**
* 构造函数
* 用于设置编辑器的主体布局
* */
public EditorDemo() {
// TODO Auto-generated constructor stub
super("简单的记事本");
Action[] actions = {
new NewAction(),new OpenAction(),new SaveAction(),
new CutAction(),new CopyAction(),new PasteAction(),
new AboutAction(),new ExitAction()
};
setJMenuBar(createJMenuBar(actions));//设置菜单栏
Container container = getContentPane();//获取容器
container.add(createJToolBar(actions),BorderLayout.NORTH);//增加工具栏
container.add(textPane,BorderLayout.CENTER);//增加文本窗格
container.add(statusBar,BorderLayout.SOUTH);//增加状态栏
setSize(660, 400);//设置窗口尺寸
setLocation(300, 200);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口时退出程序
}

/**
* 创建工具条

* */
private Component createJToolBar(Action[] actions) {
// TODO Auto-generated method stub
JToolBar toolBar = new JToolBar();//实例化工具条
/**
* 实例化新的按钮
* 设置不需要的焦点
* 添加按钮到工具栏
* */
for(int i = 0; i< actions.length; i++) {
JButton bt = new JButton(actions[i]);
bt.setRequestFocusEnabled(false);
toolBar.add(bt);
}
return toolBar;//返回工具栏
}
/**
* 创建菜单栏

* */
private JMenuBar createJMenuBar(Action[] actions) {
// TODO Auto-generated method stub
JMenuBar menuBar = new JMenuBar();//实例化菜单栏
JMenu menuFile = new JMenu("文件");
JMenu menuEdit = new JMenu("编辑");
JMenu menuAbout = new JMenu("帮助");
menuFile.add(new JMenuItem(actions[0]));//添加新的菜单项
menuFile.add(new JMenuItem(actions[1]));
menuFile.add(new JMenuItem(actions[2]));
menuFile.add(new JMenuItem(actions[7]));
menuEdit.add(new JMenuItem(actions[3]));
menuEdit.add(new JMenuItem(actions[4]));
menuEdit.add(new JMenuItem(actions[5]));
menuAbout.add(new JMenuItem(actions[6]));
menuBar.add(menuFile);
menuBar.add(menuEdit);
menuBar.add(menuAbout);
return menuBar;//返回菜单栏
}
class NewAction extends AbstractAction{
public NewAction() {
// TODO Auto-generated constructor stub
super("新建");
}
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
textPane.setDocument(new DefaultStyledDocument());//清空菜单栏
}

}
class OpenAction extends AbstractAction{
public OpenAction() {
// TODO Auto-generated constructor stub
super("打开");
}
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
int i = fileChooser.showOpenDialog(EditorDemo.this);//显示打开文件对话框
/**
* 单击对话框打开选项
* 得到选择的文件
* 得到文件输入流
* 读入文件到文本窗格
* 捕获异常,输出错误信息

* */
if(i == JFileChooser.APPROVE_OPTION) {
File f = fileChooser.getSelectedFile();
try {
InputStream is = new FileInputStream(f);
textPane.read(is,"d");
}
catch(Exception e) {
e.printStackTrace();
}
}
}

}
class SaveAction extends AbstractAction{
public SaveAction() {
// TODO Auto-generated constructor stub
super("保存");
}
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
/**
* 显示保存文件对话框
* 单击对话框中的保存按钮
* 得到文件输出流
* 写出文件
* 捕获异常

* */
int i = fileChooser.showSaveDialog(EditorDemo.this);
if(i == JFileChooser.APPROVE_OPTION) {
File f = fileChooser.getSelectedFile();
try {
FileOutputStream out = new FileOutputStream(f);
out.write(textPane.getText().getBytes());
}
catch(Exception e) {
e.printStackTrace();
}
}
}
}
class ExitAction extends AbstractAction{
public ExitAction() {
// TODO Auto-generated constructor stub
super("退出");
}


@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
System.exit(0);
}
}
class CutAction extends AbstractAction{
public CutAction() {
// TODO Auto-generated constructor stub
super("剪切");
}


@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
textPane.cut();
}
}
class CopyAction extends AbstractAction{
public CopyAction() {
// TODO Auto-generated constructor stub
super("复制");
}


@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
textPane.copy();
}
}
class PasteAction extends AbstractAction{
public PasteAction() {
// TODO Auto-generated constructor stub
super("粘贴");
}


@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
textPane.paste();
}
}
class AboutAction extends AbstractAction{
public AboutAction() {
// TODO Auto-generated constructor stub
super("关于");
}


@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
JOptionPane.showMessageDialog(EditorDemo.this,"作者:小风0010\n学号: 0010");
}
}
public static void main(String[] args) {
new EditorDemo();
}

}


猜你喜欢

转载自blog.csdn.net/qq_38701478/article/details/79486663