Java编写的文本编辑器(菜鸟作品)
//这是主窗体文件 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编写的文本编辑器(菜鸟作品)的更多相关文章
- C++ GUI Qt4编写的文本编辑器
mainwindow.h: #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMenu> #include <QAction& ...
- Selenium+java - 关于富文本编辑器的处理
什么是富文本编辑器? 富文本编辑器,Rich Text Editor, 简称 RTE, 是一种可内嵌于浏览器,所见即所得的文本编辑器.具体长啥样,如下图: 通过自动化操作富文本编辑器 模拟场景:在富文 ...
- java——巨简陋文本编辑器
String :equals()方法是进行内容比较,而不是引用比较. “==”比较两个变量本身的值,即两个对象在内存中的首地址. Scanner :用Scanner实现字符串的输入有两种方法,一种是n ...
- 假期作业02:安装JDK与文本编辑器并编写第一个Java程序
假期作业02:安装JDK与文本编辑器并编写第一个Java程序 一.安装JDK与文本编辑器并编写第一个java程序 首先在oracle官网(需要创建账号,进行登录后方可使用)按照自己的需求下载JDK(h ...
- 前后端分离ueditor富文本编辑器的使用-Java版本
最近在写一个自己的后台管理系统(主要是写着玩的,用来熟悉后端java的知识,目前只是会简单的写点接口),想在项目中编写一个发布新闻文章的功能,想到了使用百度的ueditor富文本编辑器,网上找了很多j ...
- window下如何使用文本编辑器(如记事本)创建、编译和执行Java程序
window下如何使用文本编辑器(如记事本)创建Java源代码文件,并编译执行 第一步:在一个英文目录下创建一个 .text 文件 第二步:编写代码 第三步:保存文件 方法一:选择 文件>另存为 ...
- JAVA SpringBoot2 整合 JSP视图模板 整合 Ueditor富文本编辑器
一般涉及到后台管理系统,就少不了富文本编辑器,这个可以图,文,视频混排的高级工具,笔者通过对比,发现目前市场上最好的三方库还当属百度的 ueditor 近年来 SpringBoot 框架可谓越来越火, ...
- java文本编辑器5
package peng_jun; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.* ...
- java文本编辑器v2.0 图形用户界面
package 文本编辑器; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; impor ...
随机推荐
- HW7.9
import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...
- HDU-4681 String 枚举+DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4681 题意:给A,B,C三个串,求一个最长的串D,满足D是A和B的subsequence,C是D的su ...
- 在KVM虚拟机中使用spice系列之二(USB映射,SSL,密码,多客户端支持)
在KVM虚拟机中使用spice系列之二(USB映射,SSL,密码,多客户端支持) 发布时间: 2015-02-27 00:16 1.spice的USB重定向 1.1 介绍 使用usb重定向,在clie ...
- Java网络编程(TCP协议-练习-上传文本文件)
客户端: package WebProgramingDemo; import java.io.BufferedReader; public class UploadTextClient { /** * ...
- PC问题-使用BAT方法清理Delphi临时文件
@echo offdel /S *.~*del /S *.dcudel /S *.dskdel /S *.hppdel /S *.ddpdel /S *.mpsdel /S *.mptdel /S * ...
- [iOS基础控件 - 6.0] UITableView
A.需要掌握的 1.基本属性和方法 设置UITableView的dataSource.delegate UITableView多组数据和单组数据的展示 UITableViewCell的常见属性 UIT ...
- 74HC595 for STM32 源代码【worldsing笔记】
74HC595是硅结构的CMOS器件, 兼容低电压TTL电路,遵守JEDEC标准. 74HC595是具有8位移位寄存器和一个存储器,三态输出功能. 移位寄存器和存储器是分别的时钟. 数据在SHcp(移 ...
- Visual C#使用DirectX实现视频播放
Visual C#使用DirectX实现视频播放 visual|视频播放 - 很多人第一次接触到DirectX大都是通过游戏,至于安装.升级DirectX的原因无非是满足游戏运行的需要.Direct ...
- Android大图片裁剪终极解决方案 原理分析
约几个月前,我正为公司的APP在Android手机上实现拍照截图而烦恼不已. 上网搜索,确实有不少的例子,大多都是抄来抄去,而且水平多半处于demo的样子,可以用来讲解知识点,但是一碰到实际项目,就漏 ...
- 将SCOM2007代理升级到 System Center 2012 SP1
使用以下过程可以升级到 System Center 2012 Service Pack 1 (SP1), Operations Manager工程师.您应首先验证代理程序满足最小受支持的配置.有关详细 ...