java openDia修改名称,java做一个简单的文本编辑器

本文档介绍了TextFrame Java应用,它是一款具备文件操作、编辑功能的简易文本编辑器,支持新建、打开、保存文件,以及基本的编辑操作如剪切、复制、粘贴。此外,还包含自动换行选项和查看帮助、关于记事本的介绍。
摘要由CSDN通过智能技术生成

575440729ffbc0984d955c29655d1a73.png

b7981efe83f241cc8e94efbb5b60f85c.png

adefc60a249f5a3c10ae99031ac25154.png

代码:主框架

package Text;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.ItemEvent;

import java.awt.event.ItemListener;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import javax.swing.*;

public class TextFrame extends JFrame{

public TextFrame()

{

super("简易文本编辑器");

//创建菜单栏(JMenuBar)对象

JMenuBar mBar = new JMenuBar();

//在JFrame等容器中设置菜单栏对象,即将菜单栏添加到框架容器中

this.setJMenuBar(mBar);

//创建菜单对象

JMenu file = new JMenu("文件");

JMenu edit = new JMenu("编辑");

JMenu form = new JMenu("格式");

JMenu help = new JMenu("帮助");

//将菜单添加到菜单栏中

mBar.add(file);

mBar.add(edit);

mBar.add(form);

mBar.add(help);

JTextArea workArea = new JTextArea();

JScrollPane imgScrollPane = new JScrollPane(workArea);

//add(workArea);

add(imgScrollPane,BorderLayout.CENTER);

//定义打开和保存对话框

FileDialog openDia;

FileDialog saveDia;

//默认模式为 FileDialog.LOAD

openDia = new FileDialog(this,"打开(O)",FileDialog.LOAD);

saveDia = new FileDialog(this,"另存为(A)",FileDialog.SAVE);

JMenuItem item1_1 = new JMenuItem("新建(N)");

item1_1.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

workArea.setText("");//清空文本

}

});

JMenuItem item1_2 = new JMenuItem("打开(O)");

item1_2.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

openDia.setVisible(true);

String dirPath = openDia.getDirectory();//获取文件路径

String fileName = openDia.getFile();//获取文件名称

//如果打开路径 或 目录为空 则返回空

if(dirPath == null || fileName == null){

return;

}

workArea.setText("");//清空文本

File fileO = new File(dirPath,fileName);

try{

BufferedReader bufr = new BufferedReader(new FileReader(fileO));

String line = null;

while((line = bufr.readLine()) != null){

workArea.append(line + "\r\n");

}

bufr.close(); //关闭文本

}catch(IOException er1){

throw new RuntimeException("文件读取失败!");

}

}

});

JMenuItem item1_3 = new JMenuItem("保存(S)");

item1_3.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

File fileS = null;

if(fileS == null){

saveDia.setVisible(true);

String dirPath = saveDia.getDirectory();

String fileName = saveDia.getFile();

if(dirPath == null || fileName == null)

return;

fileS = new File(dirPath,fileName);

}

try{

BufferedWriter bufw = new BufferedWriter(new FileWriter(fileS));

String text = workArea.getText();

bufw.write(text);

bufw.close();

}catch(IOException er){

throw new RuntimeException("文件保存失败!");

}

}

});

JMenuItem item1_4 = new JMenuItem("另存为(A)");

item1_4.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

File fileS = null;

if(fileS == null){

saveDia.setVisible(true);

String dirPath = saveDia.getDirectory();

String fileName = saveDia.getFile();

if(dirPath == null || fileName == null)

return;

fileS = new File(dirPath,fileName);

}

try{

BufferedWriter bufw = new BufferedWriter(new FileWriter(fileS));

String text = workArea.getText();

bufw.write(text);

bufw.close();

}catch(IOException er){

throw new RuntimeException("文件保存失败!");

}

}

});

JMenuItem item1_5 = new JMenuItem("退出(Q)");

item1_5.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

System.exit(0);

}

});

JMenuItem item2_1 = new JMenuItem("剪切(X)");

JMenuItem item2_2 = new JMenuItem("复制(C)");

JMenuItem item2_3 = new JMenuItem("粘贴(V)");

JRadioButtonMenuItem item3_1 = new JRadioButtonMenuItem("自动换行(W)",false);

item3_1.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

Object source = e.getSource();

if(source == item3_1)

workArea.setLineWrap(true); //自动换行

else if(source != item3_1)

workArea.setLineWrap(false);

}

});

JMenuItem item4_1 = new JMenuItem("查看帮助(H)");

item4_1.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent event){

new LookHelp();

}

});

JMenuItem item4_2 = new JMenuItem("关于记事本(A)");

item4_2.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent event){

new AboutBook();

}

});

//在菜单中添加菜单项

file.add(item1_1);file.add(item1_2);file.add(item1_3);file.add(item1_4);file.add(item1_5);

edit.add(item2_1);edit.add(item2_2);edit.add(item2_3);

form.add(item3_1);

help.add(item4_1);help.add(item4_2);

}//构造方法结束

public static void main(String args[])

{

TextFrame app = new TextFrame();

app.setSize(600, 400);

app.setLocation(200,200);

app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

app.setVisible(true);

}

}

查看帮助:

package Text;

import javax.swing.*;

import java.awt.*;

public class LookHelp extends JFrame{

public LookHelp(){

super("查看帮助");

this.setSize(500, 300);

this.setLocation(200,300);

this.setResizable(false);

this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);

this.setVisible(true);

Container c = this.getContentPane();

c.setLayout(new GridLayout(5,0));

JLabel label1 = new JLabel("1、菜单栏的菜单项可点击来选择功能。");

JLabel label2 = new JLabel("2、“编辑”里的剪切、复制、粘贴可用快捷键Ctrl + x、Ctrl + c、Ctrl + v实现。");

JLabel label3 = new JLabel("3、“格式”里的“自动换行”需要点中才可进行自动换行,否则会一直往后写。");

JLabel label4 = new JLabel("4、菜单栏下面的格式是用来调节文本的字体。");

JLabel label5 = new JLabel("5、本记事本的缺点是无法改变字体的样式,大小和形态。");

c.add(label1);c.add(label2);c.add(label3);c.add(label4);c.add(label5);

}

}

关于记事本:

package Text;

import javax.swing.*;

public class AboutBook extends JFrame{

public AboutBook(){

super("关于记事本");

this.setSize(220, 100);

this.setLocation(200,300);

this.setResizable(false);

this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);

this.setVisible(true);

JPanel panel = new JPanel();

JLabel label = new JLabel("制作者:Kingsely");

panel.add(label);

this.add(panel);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值