//这是主窗体文件 Wordwin.java
import javax.swing.*;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import java.awt.*;
import java.io.*;
import java.awt.event.*;
public class Wordwin extends JFrame implements DocumentListener {
/**
*
*/
private static final long serialVersionUID = 1L;
JMenuBar menubar=new JMenuBar();
JMenu file=new JMenu("文件");
JMenu edit=new JMenu("编辑");
JMenu geshi=new JMenu("格式");
JMenu look =new JMenu("查看");
JMenu help =new JMenu("帮助");
JTextArea wordArea=new JTextArea();
JScrollPane imgScrollPane = new JScrollPane(wordArea);
String [] str1={"新建","打开","保存","另存为","页面设置","打印","退出"};
String [] str2={"剪切","复制","粘贴","查找","替换"};
String [] str3={"自动换行","字体"};
Font f1=new Font("隶书",Font.PLAIN,15);
Search d1=new Search();
Font1 z1=new Font1();
Change c1=new Change();
int flag=0;
String source="";
public static void main(String[] args) {
JFrame wordwin=new Wordwin();
wordwin.setVisible(true);
}
public Wordwin(){
c1.set(wordArea);
z1.set(wordArea);
setTitle("文本编辑器");
Toolkit kit = Toolkit.getDefaultToolkit();
Dimension screenSize = kit.getScreenSize();//获取屏幕分辨率
setSize(screenSize.width/2,screenSize.height/2);//大小
setLocation(screenSize.width/4,screenSize.height/4);//位置
add(imgScrollPane,BorderLayout.CENTER);
setJMenuBar(menubar);
file.setFont(f1);
edit.setFont(f1);
geshi.setFont(f1);
look.setFont(f1);
help.setFont(f1);
menubar.add(file);
menubar.add(edit);
menubar.add(geshi);
menubar.add(look);
menubar.add(help);
wordArea.getDocument().addDocumentListener(this);
for(int i=0;i<str1.length;i++){
JMenuItem item1= new JMenuItem(str1[i]);
item1.addActionListener(new MyActionListener1());
item1.setFont(f1);
file.add(item1);
}
for(int i=0;i<str2.length;i++){
JMenuItem item2= new JMenuItem(str2[i]);
item2.addActionListener(new MyActionListener1());
item2.setFont(f1);
edit.add(item2);
}
for(int i=0;i<str3.length;i++){
JMenuItem item3= new JMenuItem(str3[i]);
item3.addActionListener(new MyActionListener1());
item3.setFont(f1);
geshi.add(item3);
}
}
public void changedUpdate(DocumentEvent e) {
flag=1;
} public void insertUpdate(DocumentEvent e) {
flag=1;
}
public void removeUpdate(DocumentEvent e) {
flag=1;
}
void open(){
FileDialog filedialog=new FileDialog(this,"打开",FileDialog.LOAD);
filedialog.setVisible(true);
String path=filedialog.getDirectory();
String name=filedialog.getFile();
if(path!=null && name!=null){
FileInputStream file = null;
try {
file = new FileInputStream(path+name);
} catch (FileNotFoundException e) { }
InputStreamReader put =new InputStreamReader(file);
BufferedReader in=new BufferedReader(put);
String temp="";
String now = null;
try {
now = (String)in.readLine();
} catch (IOException e) { e.printStackTrace();
}
while(now!=null){
temp+=now+"\r\n";
try {
now=(String)in.readLine();
} catch (IOException e) { e.printStackTrace();
}
} wordArea.setText(temp);
} } void save(){
FileDialog filedialog=new FileDialog(this,"保存",FileDialog.SAVE);
filedialog.setVisible(true);
if(filedialog.getDirectory()!=null && filedialog.getFile()!=null){
OutputStreamWriter out = null;
try {
out = new OutputStreamWriter(new FileOutputStream(filedialog.getDirectory()+filedialog.getFile()));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
try {
out.write(wordArea.getText());
} catch (IOException e) {
e.printStackTrace();
}
flag=0;
try {
out.close();
source=wordArea.getText();
} catch (IOException e) {
e.printStackTrace();
}
}
}
void newfile(){
if(flag==0){
wordArea.setText("");
}
if(flag==1){
int m= JOptionPane.showConfirmDialog(this,"是否保存该文件");
if(m==0){
save();
wordArea.setText("");
} if(m==1){
//System.exit(0);
wordArea.setText("");
flag=0;
}
}
}
void exit(){
if(flag==0){
System.exit(0);
}
if(flag==1){
int m= JOptionPane.showConfirmDialog(this,"是否保存该文件");
if(m==0){
save();
}
if(m==1){
System.exit(0);
}
}
}
class MyActionListener1 implements ActionListener{
public void actionPerformed(ActionEvent e) {
if(e.getSource()instanceof JMenuItem){
if(e.getActionCommand()=="剪切"){
wordArea.cut();
}
if(e.getActionCommand()=="复制"){
wordArea.copy();
}
if(e.getActionCommand()=="粘贴"){
wordArea.paste();
}
if(e.getActionCommand()=="查找"){
d1.setVisible(true);
}
if(e.getActionCommand()=="字体"){
z1.setVisible(true);
}
if(e.getActionCommand()=="替换"){
c1.setVisible(true);
}
if(e.getActionCommand()=="打开"){
open();
}
if(e.getActionCommand()=="保存"){
save();
}
if(e.getActionCommand()=="新建"){
newfile();
}
if(e.getActionCommand()=="退出"){
exit();
}
} } }
}

//这是查找替换的实现Change.java

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class Change extends JDialog{
/**
*
*/
private static final long serialVersionUID = 1L;
JLabel l1=new JLabel("查找内容");
JLabel l2=new JLabel("替换为");
JTextField t1=new JTextField(10);
JTextField t2=new JTextField(10);
JButton b1=new JButton("替换");
JButton b2=new JButton("全部替换");
JButton b3=new JButton("取消");
JTextArea a1=new JTextArea();
Font f1=new Font("隶书",Font.PLAIN,15);
//int m;
void set(JTextArea n){
a1=n;
}
public Change(){
setTitle("替换");
setSize(500,300);
setLocation(200,300);
setLayout(new FlowLayout());
l1.setFont(f1);
l2.setFont(f1);
t1.setFont(f1);
t2.setFont(f1);
b1.setFont(f1);
b2.setFont(f1);
b3.setFont(f1);
add(l1);
add(t1);
add(l2);
add(t2);
add(b1);
add(b2);
add(b3);
b1.addActionListener(new MyActionListener3());
b2.addActionListener(new MyActionListener3());
b3.addActionListener(new MyActionListener3());
}
class MyActionListener3 implements ActionListener{ public void actionPerformed(ActionEvent e2) {
int m;
String source=a1.getText();
String find=t1.getText();
String change=t2.getText();
if(e2.getActionCommand()=="取消"){
setVisible(false);
t1.setText("");
t2.setText("");
}
if(e2.getActionCommand()=="替换"){
m=source.indexOf(find,0);
String s1=source.substring(0,m);
String s2=source.substring(m+find.length());
source=s1+change+s2;
if(m==-1){
JOptionPane.showMessageDialog(null,"对不起,没找到您要找的内容!");
}else{
a1.setText(source);
}
}
if(e2.getActionCommand()=="全部替换"){
m=-change.length();
while(true){
m=source.indexOf(find,m+change.length());
if(m==-1)
break;
else{
String s1=source.substring(0,m);
String s2=source.substring(m+find.length());
source=s1+change+s2;
}
}
a1.setText(source);
} }
} }

//这是改变字体的Font1.java

import javax.swing.*;
import java.awt.*;
import java.awt.event.*; public class Font1 extends JDialog implements ItemListener{
/**
*
*/
private static final long serialVersionUID = 1L;
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
JPanel panel3 = new JPanel();
JComboBox comboBox1 = new JComboBox();
JComboBox comboBox2 = new JComboBox();
JComboBox comboBox3 = new JComboBox();
JLabel lab1=new JLabel("字体:");
JLabel lab2=new JLabel("字形:");
JLabel lab3=new JLabel("字号:");
String name=new String("宋体");
Font f1=new Font("隶书",Font.PLAIN,15);
int style=1;
int size=12;
String []array2=new String[]{"常 规","倾 斜","加 粗"};
String []array3=new String[]{"14","15","15","16","17","18"};
GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment();
String [] fontName=ge.getAvailableFontFamilyNames();
JButton b1=new JButton("确定");
JButton b2=new JButton("颜色");
JTextArea a1=new JTextArea();
void set(JTextArea n){
a1=n;
}
public Font1(){
setTitle("字体");
setSize(500,600);
setLayout(new FlowLayout());
//panel1.setLocation(100, 200);
lab1.setFont(f1);
lab2.setFont(f1);
comboBox1.setModel(new DefaultComboBoxModel(fontName));
comboBox1.setFont(f1);
for(int i=1;i<fontName.length;i++){
//comboBox1.setSelectedIndex(i);
comboBox1.setSelectedItem(fontName);
//comboBox1.addItem(fontName);
}
comboBox2.setModel(new DefaultComboBoxModel(array2));
comboBox2.setFont(f1);
for(int i=1;i<array2.length;i++){
//comboBox2.setSelectedIndex(i);
comboBox2.setSelectedItem(array2);
//comboBox2.addItem(array2);
}
comboBox3.setModel(new DefaultComboBoxModel(array3));
comboBox3.setFont(f1);
for(int i=1;i<array3.length;i++){
//comboBox2.setSelectedIndex(i);
comboBox2.setSelectedItem(array3);
//comboBox3.addItem(array3);
} panel1.add(lab1);
panel1.add(comboBox1);
panel2.add(lab2);
panel2.add(comboBox2);
panel3.add(lab3);
panel3.add(comboBox3);
panel3.add(b1);
panel3.add(b2);
b2.addActionListener(new MyActionListener3());
comboBox1.addItemListener(this);
comboBox2.addItemListener(this);
comboBox3.addItemListener(this);
b1.addActionListener(new MyActionListener3());
add(panel1);
add(panel2);
add(panel3);
}
public void itemStateChanged(ItemEvent e) {
if(e.getSource()==comboBox1){
name=comboBox1.getSelectedItem().toString();
}
if(e.getSource()==comboBox2){
String s1=comboBox2.getSelectedItem().toString();
if(s1.equals("加粗")){
style=Font.BOLD;
}
if(s1.equals("倾斜")){
style=Font.ITALIC;
}
if(s1.equals("常规")){
style=Font.PLAIN;
}
}
if(e.getSource()==comboBox3){
String s2=comboBox3.getSelectedItem().toString();
size=Integer.parseInt(s2);
} } class MyActionListener3 implements ActionListener{
public void actionPerformed(ActionEvent e2) {
Font f=new Font(name,style,size);
a1.setFont(f);
if(e2.getActionCommand()=="颜色"){
setcolor();
}
}
}
void setcolor(){
Color fontcolor=JColorChooser.showDialog(this,"字体颜色选择",a1.getForeground());
a1.setForeground(fontcolor);
}
}

//这是查找窗口,对不起,查找功能没实现Search.java

import javax.swing.*;
import java.awt.*;
import java.awt.event.*; public class Search extends JDialog{
/**
*
*/
private static final long serialVersionUID = 1L;
JLabel l1=new JLabel("查找内容");
JTextField t1=new JTextField(10);
JButton b1=new JButton("查找下一个");
JButton b2=new JButton("取消");
Font f1=new Font("隶书",Font.PLAIN,15);
public Search(){
setTitle("查找");
setSize(300,200);
setLayout(new FlowLayout());
b1.setFont(f1);
b2.setFont(f1);
l1.setFont(f1);
add(l1);
add(t1);
add(b1);
add(b2);
b2.addActionListener(new MyActionListener2());
}
class MyActionListener2 implements ActionListener{
public void actionPerformed(ActionEvent e1) {
setVisible(false);
} }
}

运行截图:

Java编写的文本编辑器(菜鸟作品)的更多相关文章

  1. C++ GUI Qt4编写的文本编辑器

    mainwindow.h: #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMenu> #include <QAction& ...

  2. Selenium+java - 关于富文本编辑器的处理

    什么是富文本编辑器? 富文本编辑器,Rich Text Editor, 简称 RTE, 是一种可内嵌于浏览器,所见即所得的文本编辑器.具体长啥样,如下图: 通过自动化操作富文本编辑器 模拟场景:在富文 ...

  3. java——巨简陋文本编辑器

    String :equals()方法是进行内容比较,而不是引用比较. “==”比较两个变量本身的值,即两个对象在内存中的首地址. Scanner :用Scanner实现字符串的输入有两种方法,一种是n ...

  4. 假期作业02:安装JDK与文本编辑器并编写第一个Java程序

    假期作业02:安装JDK与文本编辑器并编写第一个Java程序 一.安装JDK与文本编辑器并编写第一个java程序 首先在oracle官网(需要创建账号,进行登录后方可使用)按照自己的需求下载JDK(h ...

  5. 前后端分离ueditor富文本编辑器的使用-Java版本

    最近在写一个自己的后台管理系统(主要是写着玩的,用来熟悉后端java的知识,目前只是会简单的写点接口),想在项目中编写一个发布新闻文章的功能,想到了使用百度的ueditor富文本编辑器,网上找了很多j ...

  6. window下如何使用文本编辑器(如记事本)创建、编译和执行Java程序

    window下如何使用文本编辑器(如记事本)创建Java源代码文件,并编译执行 第一步:在一个英文目录下创建一个 .text 文件 第二步:编写代码 第三步:保存文件 方法一:选择 文件>另存为 ...

  7. JAVA SpringBoot2 整合 JSP视图模板 整合 Ueditor富文本编辑器

    一般涉及到后台管理系统,就少不了富文本编辑器,这个可以图,文,视频混排的高级工具,笔者通过对比,发现目前市场上最好的三方库还当属百度的 ueditor 近年来 SpringBoot 框架可谓越来越火, ...

  8. java文本编辑器5

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

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

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

随机推荐

  1. 洛谷 P1169 [ZJOI2007]棋盘制作

    2016-05-31 14:56:17 题目链接: 洛谷 P1169 [ZJOI2007]棋盘制作 题目大意: 给定一块矩形,求出满足棋盘式黑白间隔的最大矩形大小和最大正方形大小 解法: 神犇王知昆的 ...

  2. leetcode@ [131/132] Palindrome Partitioning & Palindrome Partitioning II

    https://leetcode.com/problems/palindrome-partitioning/ Given a string s, partition s such that every ...

  3. BNUOJ-26482 Juice 树形DP

    题目链接:http://www.bnuoj.com/bnuoj/problem_show.php?pid=26482 题意:给一颗树,根节点为送电站,可以无穷送电,其它节点为house,电量达到pi时 ...

  4. Java深度遍历文件夹(递归实现)

    package FileDemo; import java.io.File; public class DeepSearchDir { /** * @param args */ public stat ...

  5. [OC Foundation框架 - 21] NSSet集合 & 集合之间的转换

    A.NSSet 跟NSArray一样,不可变 NSArray 自然顺序 NSSet是无序的 NSSet不允许存入重复元素,可以用来过滤重复元素   也有可变的NSMutableSet   B.集合转换 ...

  6. 转载 8天掌握EF的Code First开发之Entity Framework介绍

    转载原地址:  http://www.cnblogs.com/farb/p/IntroductionToEF.html Entity Framework概要 Entity Framework是微软的O ...

  7. Delphi- 操作EXCEL

    因工作需要,需要到操作EXCEL,先了解一下怎么读取EXCEL这个,做了一个DEMO,备注在这里 一.读取EXCEL unit Unit1; interface uses Windows, Messa ...

  8. 一步一步学android控件(之十五) —— DegitalClock & AnalogClock

    原本计划DigitalClock和AnalogClock单独各一篇来写,但是想想,两个控件的作用都一样,就和在一起写一篇了. DegitalClock和AnalogClock控件主要用于显示当前时间信 ...

  9. 剑指OFFER之把数组排成最小的数(九度OJ1504)

    题目描述: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323. 输入: 输 ...

  10. 关于 mysql.test 数据库

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...