今天看见自己的博文里有一篇有关java实现文本编辑器的课程设计没有实现完全,我在这里将JTextArea改成了JTextPane,实现了文本编辑器的对齐方式,文本字体大小背景等设置,有关文件的操作等,同时也解决了窗口关闭问题,该文本编辑器是txt与Word的结合体,对于java初学者而言,是一次很好的训练题材
题目及相关说明见前面的一篇有关java实现文本编辑器的文章
主要代码:
//入口函数
public class ex {
public static void
main(String[] args)
{
new Notepad();
}
}
//主要框架类 Notepad
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import javax.swing.*;
import javax.swing.event.CaretEvent;
import javax.swing.event.CaretListener;
import javax.swing.filechooser.FileFilter;
import javax.swing.text.BadLocationException;
import javax.swing.undo.UndoManager;
import org.w3c.dom.Document;
public class Notepad extends JFrame implements ActionListener
,MouseListener,CaretListener
{
private static final long serialVersionUID =
1L;
private File file;
private JTextPane text;
private JMenu menu[];
private JFileChooser fchooser;
private PrinterJob prtMe;
private JCheckBoxMenuItem
checklinewrapmenuitem;
private JPopupMenu popupmenu;
private UndoManager myundo = new
UndoManager();
//UndoManager 管理 UndoableEdit
列表,提供撤消或恢复适当编辑的方法。
//FindJFrame findnext;
//Clipboard
clipbd=getToolkit().getSystemClipboard();
private
JPanel panelstatus;
private
JTextField text_status;
private
JCheckBoxMenuItem checkstatusmenuitem;
public Notepad()
{
super("Notepad");
Dimension dim =
getToolkit().getScreenSize(); //获得屏幕分辨率
this.setBounds(dim.width/4,dim.height/4,dim.width/2,dim.height/2);//窗口大小一半、居中
this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.setLayout(new BorderLayout());
text = new JTextPane();
text.getDocument().addUndoableEditListener(myundo);
text.addCaretListener(this);
this.getContentPane().add(new JScrollPane(text)); //JTextField加滚动条
JMenuBar menubar = new
JMenuBar(); //加菜单栏
this.setJMenuBar(menubar);
String[] menustr = {"文件","编辑","格式","查看","帮助"};
menu = new JMenu[menustr.length];
for(int i=0;i
{
menu[i] = new JMenu(menustr[i]);
menubar.add(menu[i]);
}
Filemenu();
Editmenu();
Formatmenu();
watchmenu();
helpmenu();
//加弹出菜单
text.addMouseListener(this); //JTextField中加鼠标监听器
mypopupmenu();
text.add(popupmenu); //把弹出菜单加在JTextField中 MyToolbar(); //加工具栏
MyStatusbar(); //添加装态栏
this.setVisible(true);
this.file=null;
this.fchooser=new JFileChooser(new
File(".","")); //文件对话框的初始路径是当前路径
// this.fchooser.setFileFilter(new FileFilter("文本文件(*.txt)","txt"));
//设置文件过滤器
prtMe = PrinterJob.getPrinterJob();
//PrinterJob
类是控制打印的主要类。应用程序调用此类中的方法设置作业、(可选地)调用与用户的打印对话框,然后打印作业的页面。
}
public Notepad(File file) {
this();