//这是主窗体文件 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. 【组队训练】2015-2016 ACM-ICPC, NEERC, Southern Subregional Contest

    好多oj都崩掉了,于是打了cf.. 开始开的最后一题...尼玛题好长终于看完了...神题不会.... I过了好多人..看了下,一眼题...随便敲了下,1A ]; int main(){ int n, ...

  2. hdoj 2120 Ice_cream's world I【求成环数】

    Ice_cream's world I Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  3. [iOS基础控件 - 4.4] 进一步封装"APP列表”,初见MVC模式

    A.从ViewController分离View 之前的代码中,View的数据加载逻辑放在了总的ViewController中,增加了耦合性,应该对控制器ViewController隐藏数据加载到Vie ...

  4. 转载 asp.net中ViewState的用法详解

    转载原地址: http://www.jb51.net/article/73662.htm 在web窗体控件设置为runat = "server",这个控件会被附加一个隐藏的属性_V ...

  5. js与java通信

    js 调用java中的接口并传递参数给客户端处理方式: webView.addJavascriptInterface(new NewsDetail() , "newsDetail" ...

  6. JBoss7快速入门

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

  7. 利用sqlmap和burpsuite绕过csrf token进行SQL注入 (转)

    问题:post方式的注入验证时遇到了csrf token的阻止,原因是csrf是一次性的,失效导致无法测试. 解决方案:Sqlmap配合burpsuite,以下为详细过程,参照国外牛人的blog(不过 ...

  8. 对PostgreSQL xmin的深入学习

    当PostgreSQL需要insert 一条记录的时候,它会把记录头放入xmin,xmax等字段. xmin的值,就是当前的Transaction的TransactionId.这是为了满足MVCC的需 ...

  9. hdu 5442 Favorite Donut 后缀数组

    Favorite Donut Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid ...

  10. 【PAT Advanced Level】1006. Sign In and Sign Out (25)

    关键在于清空字符数组和使用scanf进行输入 #include <stdio.h> #include <string.h> #include <fstream> # ...