package peng_jun;

 import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.util.*;
import java.io.*;
import javax.swing.filechooser.*;
import javax.swing.filechooser.FileFilter;
import java.awt.datatransfer.*; public class Text extends JFrame {
TextArea area;//文本域
String name = null;//文件名
String board = null;
private Clipboard cb;//系统粘贴板 Text() throws Exception {//构造函数
setTitle("记事本");
Toolkit kit = Toolkit.getDefaultToolkit();//Toolkit获得本机系统的屏幕的参数
//Image img = kit.getImage("01.jpg");
//setIconImage(img); JMenuBar jmb = new JMenuBar();//创建菜单条
add(jmb);
setJMenuBar(jmb);
area = new TextArea();
add(area); JMenu file = new JMenu("文件");//定义“文件”菜单项
JMenuItem rebuild = new JMenuItem("新建");
rebuild.setAccelerator(KeyStroke.getKeyStroke("ctrl N"));
JMenuItem save = new JMenuItem("保存");
save.setAccelerator(KeyStroke.getKeyStroke("ctrl S"));
JMenuItem open = new JMenuItem("打开");
open.setAccelerator(KeyStroke.getKeyStroke("ctrl O"));
JMenuItem anotherSave = new JMenuItem("另存为");
file.add(rebuild);
file.add(save);
file.add(open);
file.add(anotherSave);
// JScrollPane scroldPane=new JScrollPane(area); //设置滚动轴
// add(scroldPane);
JMenu edit = new JMenu("编辑");//定义“编辑”菜单项
JMenuItem cut = new JMenuItem("剪切");
cut.setAccelerator(KeyStroke.getKeyStroke("ctrl X"));
JMenuItem copy = new JMenuItem("复制");
copy.setAccelerator(KeyStroke.getKeyStroke("ctrl C"));
JMenuItem plaster = new JMenuItem("粘贴");
plaster.setAccelerator(KeyStroke.getKeyStroke("ctrl V"));
JMenuItem all = new JMenuItem("全选");
all.setAccelerator(KeyStroke.getKeyStroke("ctrl A"));
edit.add(cut);
edit.add(copy);
edit.add(plaster);
edit.add(all);
JMenu help = new JMenu("帮助");//定义“帮助”菜单项
JMenuItem about = new JMenuItem("关于");
help.add(about); jmb.add(file);
jmb.add(edit);
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();
}
}); 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简易文本编辑器");
frame.add(area1);
frame.setVisible(true);
}
});
} public void openText() // 打开
{
JFileChooser chooser = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter("Files",
"txt", "java");
chooser.setFileFilter(filter);
chooser.setCurrentDirectory(new File("."));
int result = chooser.showOpenDialog(Text.this);
if (result == JFileChooser.APPROVE_OPTION) {
name = chooser.getSelectedFile().getPath();
setTitle(name);
try {
BufferedReader in = new BufferedReader(new FileReader(name));
String line = null;
String datas = "";
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");
chooser.setFileFilter(filter);
chooser.setCurrentDirectory(new File("."));
int result = chooser.showSaveDialog(Text.this);
if (result == JFileChooser.APPROVE_OPTION) {
name = chooser.getSelectedFile().getPath();
try {
OutputStream out = new FileOutputStream(name);
String datas = area.getText();
out.write(datas.getBytes());
out.close();
} catch (Exception ex) {
}
}
} else {
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");
chooser.setFileFilter(filter);
chooser.setCurrentDirectory(new File("."));
int result = chooser.showSaveDialog(Text.this);
if (result == JFileChooser.APPROVE_OPTION) {
name = chooser.getSelectedFile().getPath();
try {
OutputStream out = new FileOutputStream(name);
String datas = area.getText();
out.write(datas.getBytes());
out.close();
} catch (Exception ex) {
}
}
} public static void main(String[] args) throws Exception {
new Text();
}
}

java简易编辑器的更多相关文章

  1. java文本编辑器5

    package peng_jun; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.* ...

  2. Java IDE 编辑器 --- IntelliJ IDEA 进阶篇 生成 hibernate 实体与映射文件

    原文:转:Java IDE 编辑器 --- IntelliJ IDEA 进阶篇 生成 hibernate 实体与映射文件 2011-04-30 12:50 很多人不知道怎么用 IntelliJ IDE ...

  3. Eclipse Java类编辑器里出现乱码的解决方案

    如图:在Java Class编辑器里出现的这种乱码,非常烦人. 解决方案:Windows->Preference->General->Appearance, 在里面将Theme设置成 ...

  4. java文本编辑器v2.0 图形用户界面

    package 文本编辑器; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; impor ...

  5. 数据结构——单链表java简易实现

    巩固数据结构 单链表java实现 单链表除了表尾 每个几点都有一个后继 结点有数据和后继指针组成  通过构建表头和表尾(尾部追加需要)两个特殊几点 实现单链表的一些操作,代码如下 package co ...

  6. java 简易日历表

    在页面上输出1900年以后任意一年的简易日历表 package text3; import java.util.Scanner; public class MyCalendar { public st ...

  7. 补码一位乘法 Booth算法 Java简易实现

    本文链接:https://www.cnblogs.com/xiaohu12138/p/11955619.html. 转载,请说明出处. 本程序为简易实现补码一位乘法,若代码中存在错误,可指出,本人会不 ...

  8. Java简易日历的实现

    import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; imp ...

  9. mongo数据管理java简易版

    mongo是搭建在局域网服务器上的,处理起来比较麻烦,于是自己写了个简单的处理工具. 如果有对java操作mongo不太了解的也可以在这里看下简单的示例. 只有增删改查的功能,而且只支持json格式的 ...

随机推荐

  1. SQL 数据类型、约束、索引及视图

    一.数据类型:整数:int,bigint,smallint小数:float,real,decimal(长度,精度),numeric(长度,精度)字符:char(n),varchar(n) 8000英文 ...

  2. 20141021WinForm控件属性

    一.Form对象属性:Name:窗体类的类名(一)外观:BackColor:窗体背景色ForeColor:窗体文字色BackgroundImage:背景图片Font:设置字体FormBorderSty ...

  3. VB.NET函数——数学函数/字母串函数

    一.数学函数 函数 说明 Abs (num) 取绝对值. Exp (num) 返回以e为底.以num为指数的值,如Exp(2)返回e^2值. Log (num) 返回参数num的自然对数值,为Doub ...

  4. vsftpd限制用户不能更改根目录

    在IE下登陆会出现如下图所示情况,当时直接吓尿了,尼玛这台危险了.仔细一想可定是在配置vsftpd.conf时没有设置用户不能更改根目录:

  5. Quartz 2D官方文档翻译(持续更新中)

    转换  核心绘图模型定义了两个完全独立的坐标空间:用户空间,一个是代表文档页,和设备空间,另外一个代表本机设备的分辨率.用户空间坐标是与设备空间中像素分辨率无关的浮点数字.当你想要打印或者显示你的文档 ...

  6. C#中一个问号和两个问号(a ?? b)的作用

    不卖关子,直接开门见山: C#中两个问号的作用是判断??左边的对象是否为null,如果不为null则使用??左边的对象,如果为null则使用??右边的对象. 比如:a = b ?? c,如果b为nul ...

  7. Qt 之 show,hide,setVisible,setHidden,close 等小结

    0QObject::deleteLater()delete obj;析构对象1QWidget::setVisible(bool)使得Widget可见或不可见2QWidget::setHidden(bo ...

  8. js操作cookie,js判断浏览器属性,

    在默认情况下,只有设置cookie的网页才能读取该cookie.如果想让一个页面读取另一个页面设置的cookie,必须设置cookie的路径. http://www.jb51.net/article/ ...

  9. javascript 数组的常用操作函数

    join() Array.join(/* optional */ separator) 将数组转换为字符串,可带一个参数 separator (分隔符,默认为“,”). 与之相反的一个方法是:Stri ...

  10. 提示constructor无法location的原因

    1.缺少对应属性的set方法 2.缺少确实没有对应的方法 3.对应的构造方法中参数类型不匹配 4.java对象不会在寻找构造函数时执行数据类型的强制类型转换,没有对应的类型就返回异常,不会自动强制转换 ...