java文本编辑器5
package peng_jun; import java.awt.*;
import java.awt.event.*; import javax.swing.*; import java.io.*; import javax.swing.filechooser.*; import java.awt.datatransfer.*; public class Text4 extends JFrame {
public static void main(String[] args) throws Exception {
new Text4();
} JTextArea area = new JTextArea();;// 文本域
String name = null;// 文件名
String board = null;
Clipboard cb;// 系统粘贴板 此类实现一种使用剪切/复制/粘贴操作传输数据的机制 JMenu font = new JMenu("字体");
JMenuItem bold = new JMenuItem("加粗");
JMenuItem italics = new JMenuItem("斜体");
JMenu size = new JMenu("字号");
JMenuItem size_18 = new JMenuItem("");
JMenuItem size_19 = new JMenuItem("");
JMenuItem size_20 = new JMenuItem("");
JMenuItem size_21 = new JMenuItem("");
JMenu color = new JMenu("颜色");
JMenuItem red = new JMenuItem("红色");
JMenuItem blue = new JMenuItem("蓝色"); JMenu file = new JMenu("文件");// 定义“文件”菜单项
JMenuItem rebuild = new JMenuItem("新建");
JMenuItem save = new JMenuItem("保存");
JMenuItem open = new JMenuItem("打开");
JMenuItem anotherSave = new JMenuItem("另存为");
JMenuItem clear = new JMenuItem("清除");
JMenuItem close = new JMenuItem("退出"); JMenu edit = new JMenu("编辑");// 定义“编辑”菜单项
JMenuItem cut = new JMenuItem("剪切");
JMenuItem copy = new JMenuItem("复制");
JMenuItem plaster = new JMenuItem("粘贴");
JMenuItem all = new JMenuItem("全选");
JMenuItem replice = new JMenuItem("替换");
JMenuItem check = new JMenuItem("查找"); JMenu help = new JMenu("帮助");// 定义“帮助”菜单项
JMenuItem about = new JMenuItem("关于"); Toolkit kit = Toolkit.getDefaultToolkit();// Toolkit获得本机系统的屏幕的参数
JMenuBar jmb = new JMenuBar();// 创建菜单条 Text4() throws Exception {// 构造函数
setTitle("记事本"); // 设置快捷键
bold.setAccelerator(KeyStroke.getKeyStroke("ctrl B"));
italics.setAccelerator(KeyStroke.getKeyStroke("ctrl I"));
rebuild.setAccelerator(KeyStroke.getKeyStroke("ctrl N"));
save.setAccelerator(KeyStroke.getKeyStroke("ctrl S"));
copy.setAccelerator(KeyStroke.getKeyStroke("ctrl C"));
open.setAccelerator(KeyStroke.getKeyStroke("ctrl O"));
cut.setAccelerator(KeyStroke.getKeyStroke("ctrl X"));
plaster.setAccelerator(KeyStroke.getKeyStroke("ctrl V"));
all.setAccelerator(KeyStroke.getKeyStroke("ctrl A"));
replice.setAccelerator(KeyStroke.getKeyStroke("ctrl H"));
check.setAccelerator(KeyStroke.getKeyStroke("ctrl F")); add(jmb);
setJMenuBar(jmb);// 设置菜单条
add(area);
file.add(rebuild);
file.add(save);
file.add(open);
file.add(anotherSave);
file.addSeparator();
file.add(clear);
file.add(close);
// JScrollPane scroldPane=new JScrollPane(area); //设置滚动轴
// add(scroldPane); edit.add(cut);
edit.add(copy);
edit.add(plaster);
edit.add(all);
edit.addSeparator();
edit.add(replice);
edit.add(check); font.add(bold);
font.add(italics);
size.add(size_18);
size.add(size_19);
size.add(size_20);
size.add(size_21);
color.add(red);
color.add(blue);
font.add(size);
font.add(color); help.add(about);
// 添加事件
clear.addActionListener(new HandleAct());
close.addActionListener(new HandleAct());
bold.addActionListener(new HandleAct());
italics.addActionListener(new HandleAct());
size_18.addActionListener(new HandleAct());
size_19.addActionListener(new HandleAct());
size_20.addActionListener(new HandleAct());
size_21.addActionListener(new HandleAct());
red.addActionListener(new HandleAct());
blue.addActionListener(new HandleAct());
replice.addActionListener(new HandleAct());
check.addActionListener(new HandleAct()); jmb.add(file);
jmb.add(edit);
jmb.add(font);
jmb.add(help);
setSize(, );// 大小信息
// setLocation(300, 200);// 文本框位置
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); cb = Toolkit.getDefaultToolkit().getSystemClipboard();// 调用系统剪贴板
save.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
saveText();
} catch (Exception ex) {
}
}
});
open.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
openText();
} catch (Exception ex) {
}
}
});
rebuild.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
area.setText("");
name = null;
} catch (Exception ex) {
}
}
});
anotherSave.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
anotherSaveText();
}
}); size_18.addActionListener(new ActionListener() { @Override
public void actionPerformed(ActionEvent e) {
// TODO 自动生成的方法存根
Font oldF = area.getFont();// 获取当前字体
String name = oldF.getName();// 获取当前字体的名字
area.setFont(new Font(name, oldF.getStyle(), ));
}
}); cut.addActionListener(new ActionListener() // 剪切
{
public void actionPerformed(ActionEvent e) {
board = area.getSelectedText();
cb.setContents(new StringSelection(board), null);
area.replaceRange("", area.getSelectionStart(),
area.getSelectionEnd());
}
});
copy.addActionListener(new ActionListener() // 复制
{
public void actionPerformed(ActionEvent e) {
board = area.getSelectedText();
cb.setContents(new StringSelection(board), null);
}
});
plaster.addActionListener(new ActionListener() // 粘贴
{
public void actionPerformed(ActionEvent e) {
try {
Transferable content = cb.getContents(null);
String st = (String) content
.getTransferData(DataFlavor.stringFlavor);
area.replaceRange(st, area.getSelectionStart(),
area.getSelectionEnd());
} catch (Exception ex) {
}
}
});
all.addActionListener(new ActionListener() // 全选
{
public void actionPerformed(ActionEvent e) {
area.setSelectionStart();
area.setSelectionEnd(area.getText().length());
}
}); about.addActionListener(new ActionListener() {// 帮助
public void actionPerformed(ActionEvent e) {
JFrame frame = new JFrame("关于");
frame.setSize(, );
frame.setLocation(, );
JTextArea area1 = new JTextArea("java简易文本编辑器开发人员:" + '\n'
+ "彭军军 201321091103," + '\n' + "鲍静瑶201321091080,"
+ '\n' + "刘瑾 201321091081.");
frame.add(area1);
frame.setVisible(true);
}
});
} public void openText() // 打开
{
/*
* 在选择文件方法中,首先创建JFileChooser文件选择器,
* 使用JFileChooser类的setFileFilter()方法创建文件扩展名过滤器,再使用JFileChooser类
* 的setFileSelectionMode()方法设置文件选择模式为文件,
* 通过JFileChooser类的showOpenDialog()方法显示文件打开对话框,确定用户按下打开按钮,
* 而非取消按钮后,通过JFileChooser类的getSelectedFile()方法获取用户选择的文件对象,
* 使用JTextField类的setText()方法显示文件信息到文本框。
*/
JFileChooser chooser = new JFileChooser();//创建JFileChooser文件选择器
FileNameExtensionFilter filter = new FileNameExtensionFilter("Files",
"txt", "java","html","css","js");//文件过滤器
chooser.setFileFilter(filter);
chooser.setCurrentDirectory(new File("."));
int result = chooser.showOpenDialog(Text4.this);//打开当前文件夹
if (result == JFileChooser.APPROVE_OPTION) {//用户按下了yes
name = chooser.getSelectedFile().getPath();//获取文件对象
setTitle(name);
try {
BufferedReader in = new BufferedReader(new FileReader(name));
String line = null;
String datas = "";//保存数据
//用while循环来判断读取是否结束 此处用的是行读取
while ((line = in.readLine()) != null) {
if (datas == "") {
datas = datas + line;
} else {
datas = datas + "\n" + line;
}
}
area.setText(datas);
in.close();
} catch (Exception ex) {
}
}
} public void saveText() // 保存
{
if (name == null) {
JFileChooser chooser = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter(
"Files", "txt", "java");// 限制扩展名,只能杜渠道txt和java类型的文件
chooser.setFileFilter(filter);
chooser.setCurrentDirectory(new File("."));//设置当前目录
int result = chooser.showSaveDialog(Text4.this);
if (result == JFileChooser.APPROVE_OPTION) {//用户按下了yes
name = chooser.getSelectedFile().getPath();
try {
OutputStream out = new FileOutputStream(name);
String datas = area.getText();
out.write(datas.getBytes());
out.close();
} catch (Exception ex) {
}
}
}
} public void anotherSaveText() // 另存为
{
JFileChooser chooser = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter("Files",
"txt", "java","html","js","css");
chooser.setFileFilter(filter);
chooser.setCurrentDirectory(new File("."));
int result = chooser.showSaveDialog(Text4.this);
if (result == JFileChooser.APPROVE_OPTION) {//用户按下了yes
name = chooser.getSelectedFile().getPath();
try {
OutputStream out = new FileOutputStream(name);
String datas = area.getText();
out.write(datas.getBytes());
out.close();
} catch (Exception ex) {
}
}
} class HandleAct implements ActionListener {// 内部类 public void actionPerformed(ActionEvent e) {
// TODO 自动生成的方法存根
Font oldF = area.getFont();// 获取当前字体
String name = oldF.getName();// 获取当前字体的名字
int size = oldF.getSize();// 当前字体的大小
if (e.getSource() == size_18)
area.setFont(new Font(name, oldF.getStyle(), ));
else if (e.getSource() == size_19)
area.setFont(new Font(name, oldF.getStyle(), ));
else if (e.getSource() == size_20)
area.setFont(new Font(name, oldF.getStyle(), ));
else if (e.getSource() == size_21)
area.setFont(new Font(name, oldF.getStyle(), )); if (e.getSource() == red) {
area.setForeground(Color.red);// 设置文字颜色
} else if (e.getSource() == blue) {
area.setForeground(Color.blue);// 设置文字颜色
} if (e.getSource() == bold) {
area.setFont(new Font(name, Font.BOLD, size));
} else if (e.getSource() == italics) {
area.setFont(new Font(name, Font.ITALIC, size));
} if (e.getSource() == clear) {
area.setText(" ");
} else if (e.getSource() == close) {
System.exit();
} if (e.getSource() == replice) {
//替换弹出框的布局
JPanel replacePanel = new JPanel();
JLabel lookupLabel = new JLabel("要替换的内容");
JTextField inputText = new JTextField();
JLabel replaceLabel = new JLabel("替换为");
JTextField changetoText = new JTextField();
replacePanel.add(lookupLabel);
replacePanel.add(inputText);
replacePanel.add(replaceLabel);
replacePanel.add(changetoText);
//布局结束
JOptionPane.showMessageDialog(null, replacePanel);
String text = area.getText();//获得整个文本内容
String changeText = text.replace(inputText.getText(),
changetoText.getText());//启用replace功能函数
area.setText(changeText);
}
else if (e.getSource() == check) {
//查找弹出框的布局
JPanel swapPanel=new JPanel();
JLabel seekLabel=new JLabel("要查找的内容");
JTextField inputText=new JTextField();
swapPanel.add(seekLabel);
swapPanel.add(inputText);
JOptionPane.showMessageDialog(null,swapPanel);
//布局结束
String text=area.getText();//获得整个文本内容
int fromIndex=area.getCaretPosition();//取得当前的光标位置
int lastfromIndex=text.lastIndexOf(inputText.getText(),fromIndex);//获得查找后的位置
area.setCaretPosition(lastfromIndex);
area.moveCaretPosition(lastfromIndex+inputText.getText().length());//使查找到的子字符串显示出来
} } } }
java文本编辑器5的更多相关文章
- java文本编辑器v2.0 图形用户界面
package 文本编辑器; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; impor ...
- Java文本编辑器中遇到的问题详解
今天介绍文件的读取和写入,分别用FileReader,FileWriter 1,FileWriter类(字符输出流类) 构造方法:FileWriter fw = new FileWriter(Stri ...
- Java编写的文本编辑器(菜鸟作品)
//这是主窗体文件 Wordwin.java import javax.swing.*; import javax.swing.event.DocumentEvent; import javax.sw ...
- 前后端分离ueditor富文本编辑器的使用-Java版本
最近在写一个自己的后台管理系统(主要是写着玩的,用来熟悉后端java的知识,目前只是会简单的写点接口),想在项目中编写一个发布新闻文章的功能,想到了使用百度的ueditor富文本编辑器,网上找了很多j ...
- Java实现简易的文本编辑器
需求分析: 获得文本名称 实现尾部追加功能 实现覆盖式添加数据 删除数据 获取光标位置 在特定光标位置处添加数据 查找特定字符串在主串中第一次出现的位置 统计文本文件内出现的数字,汉字,英文字母,特殊 ...
- Java实现"命令式"简易文本编辑器原型
源自早先想法, 打算从界面方向做些尝试. 找到个简单文本编辑器的实现: Simple Text Editor - Java Tutorials. 原本的菜单/按钮界面如下. 包括基本功能: 新建/打开 ...
- window下如何使用文本编辑器(如记事本)创建、编译和执行Java程序
window下如何使用文本编辑器(如记事本)创建Java源代码文件,并编译执行 第一步:在一个英文目录下创建一个 .text 文件 第二步:编写代码 第三步:保存文件 方法一:选择 文件>另存为 ...
- 关于富文本编辑器—UEditor(java版)的使用,以及如何将UEditor的文件/图片上传路径改成绝对路径
突然发现好久没写博客了,感觉变懒了,是要让自己养成经常写文章的习惯才行.既可以分享自己的所学,和所想,和大家一起讨论,发现自己的不足的问题. 大家可能经常会用到富文本编辑器,今天我要说的是UEdito ...
- JAVA SpringBoot2 整合 JSP视图模板 整合 Ueditor富文本编辑器
一般涉及到后台管理系统,就少不了富文本编辑器,这个可以图,文,视频混排的高级工具,笔者通过对比,发现目前市场上最好的三方库还当属百度的 ueditor 近年来 SpringBoot 框架可谓越来越火, ...
随机推荐
- Oracle触发器Trigger2行级
create table trigger_t2( id int, name ), age int ); /* --创建一个before update的触发器-控制每一行,行级 --只有行级的才会有:n ...
- C# C++ Java接口类型转换
最近这几天做了一个兼职 ,主要是把C语言以及C#语言封装的dll,经过C++中转为Java语言支持的,主要其中的问题就是类型转换,在此列出常用类型的转换过程. #include "stdaf ...
- Arduino周边模块:传感器部件(温敏、光敏、湿敏)
Arduino周边模块:传感器部件(温敏.光敏.湿敏) Arduino周边模块:传感器部件(温敏.光敏.湿敏) Arduino的模数转换 对于Arduino来说,它只认识数字量,模拟量对其来说就是一门 ...
- javascript定时器(上)
(一).setInterval 间隔性 function show(){ alert(‘a’); } setInterval(show,1000); 每隔1000毫秒(1秒)执行一次show这个函数: ...
- Javascript基本概念(语句和函数)
语句 for语句 for语句中的初始化表达式,控制表达式和循环后表达式都是可选的,将这三个表达式省略,就会创建一个无线循环. ECMAScript中不存在块级作用域,因此在循环内容部定义的变量也可以在 ...
- ODI 系列学习--整体架构概念
ODI 系列学习--整体架构概念 ODI整体架构没有Oracle Database复杂,因为它属于程序功能的使用,更多是程序开发和配置的工作,当然ODI的优化涉及到很多数据库优化的工作,从整体架构入手 ...
- JLINK烧写BIN文件到nand、norflash、SDRAM
1. 简要说明 JLink的调试功能.烧写Flash的功能都很强大,但是对于S3C2410.S3C2440的Flash操作有些麻烦:烧写Nor Flash时需要设置SDRAM,否则速率很慢:烧写Nan ...
- flex lineChart中自定义datatip
原文 http://www.giser.net/?p=776 在Flex4中使用lineChart会遇到一个bug,datatip上的背景是黑色的,造成文字看不清楚,和整体界面不协调. 那么解决这个问 ...
- linux 进程(二) --- 进程的创建及相关api
一.进程的创建fork()函数 由fork创建的新进程被称为子进程(child process).该函数被调用一次,但返回两次.两次返回的区别是子进程的返回值是0,而父进程的返回值则是 新子进程的进 ...
- MSSQL 日期操作函数 总结
set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go ALTER FUNCTION [dbo].[ufn_getDateOfWeek] (@Date Dateti ...