Java编写的文本编辑器(菜鸟作品)
2015-07-18 15:38
369 查看
//这是主窗体文件 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[]{"常 规","倾
4000
斜","加 粗"};
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基础---反射和代理
- 基于Java的打包jar、war、ear包的作用与区别详解
- Java编写的文本编辑器(菜鸟作品)
- Java方法参数- 值调用的理解
- (算法入门)基本图论-广度优先搜索之JAVA实现
- Java语言编写计算器(简单的计算器)
- Java语言编写计算器(简单的计算器)
- struts拦截器
- ubuntu 下解决“no java virtual machine was found after searching the following locations:” 方法
- Java NIO 系列教程
- Java中关键字final、static使用总结
- Java基础---Proxy 代理
- MyEclipse10搭建Strust2开发环境(2)
- Java 文件操作
- 分布式消息队列中间件系列研究之阿堂教程(基础篇-Local模式)
- Struts2输入校验之validate输入校验方式
- [LeetCode][Java] Search in Rotated Sorted Array II
- java interface的两个经典用法
- java我的总结——一些基础知识和代码
- Spring的注解配置和XML配置的比较