java setselectionend_续:Java实现文本编辑器(JTextPane)

今天看见自己的博文里有一篇有关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();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值