/**本java程序设计一个简单的文本框编辑器,
对文本区的选中字符串进行复制,粘贴等操作,
改变文本区的字号,字行等字体,当字号出错时,
弹出提示对话框。*/
/**目的:演示文本区,复选框组件的使用,演示菜单的使用方法*/
import java.lang.*;//导入lang包
import java.awt.*;//导入awt包
import java.io.*;//导入io包
import java.awt.datatransfer.*;//导入datatransfer包
import java.awt.event.*;//导入event包
import javax.swing.*;//导入swing包
import javax.swing.text.*;//导入swing.text包
public class EditorFrame extends Frame implements ActionListener
{
//编辑的文本
TextArea textArea = new TextArea();
//菜单
MenuBar menuBar = new MenuBar();
//文件菜单
Menu fileMenu = new Menu("文件");
//文件菜单栏中的"创建","打开","保存"和"退出"等
MenuItem newItem = new MenuItem("创建");
//创建实例化
MenuItem openItem = new MenuItem("打开");
//打开实例化
MenuItem saveItem = new MenuItem("保存");
//保存实例化
MenuItem saveAsItem = new MenuItem("另存");
//另存为实例化
MenuItem exitItem = new MenuItem("退出");
//退出实例化
//菜单栏中的"全选","复制","剪切","粘贴"等选项
Menu editMenu = new Menu("编辑");
//菜单实例化
MenuItem selectItem = new MenuItem("全选");
//查询菜单实例化
MenuItem copyItem = new MenuItem("复制");
//复制菜单实例化
MenuItem cutItem = new MenuItem("剪切");
//剪切菜单实例化
MenuItem pasteItem = new MenuItem("粘贴");
//粘贴菜单实例化
MenuItem editUndoItem = new MenuItem("撤消(U)");
Menu HelpMenu=new Menu("帮助");
MenuItem helpItem=new MenuItem("帮助(H)");
String fileName;// = "文本编辑器";
Toolkit toolKit = Toolkit.getDefaultToolkit();
//剪贴板对象
Clipboard clipBoard = getToolkit().getSystemClipboard();
//打开文件对话框和保存文件对话框
private FileDialog openFileDialog = new FileDialog(this, "Open File", FileDialog.LOAD);
private FileDialog saveAsFileDialog = new FileDialog(this, "Save File As", FileDialog.SAVE);
public EditorFrame()//EditorFrame方法
{
setTitle("文本编辑器"); //设题目
setFont(new Font("Times New Roman", Font.PLAIN, 14)); //设字体大小
setBackground(Color.white); //设背景
setSize(600, 400); //设窗体大小
//窗口中添加菜单栏
fileMenu.add(newItem); //添加"创建"
fileMenu.add(openItem); //添加"打开"
fileMenu.addSeparator();//分隔线
fileMenu.add(saveItem); //添加"保存"
fileMenu.add(saveAsItem); //添加"另存为"
fileMenu.addSeparator(); //分隔线
fileMenu.add(exitItem); //添加"退出"
editMenu.addSeparator(); //添加分隔线
editMenu.add(selectItem); //"全选"
editMenu.add(copyItem); //添加"复制"
editMenu.add(cutItem); //添加"剪切"
editMenu.add(pasteItem); //添加"粘贴"
HelpMenu.add(helpItem);
menuBar.add(fileMenu); //添加"文件"
menuBar.add(editMenu); //添加"编辑"
menuBar.add(HelpMenu);
setMenuBar(menuBar); //初始化
add(textArea); //加入文本区
//窗口的退出方式
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
//注册各个事件监听器
newItem.addActionListener(this); //新建事件监听
openItem.addActionListener(this); //打开事件监听
saveItem.addActionListener(this); //保存事件监听
saveAsItem.addActionListener(this); //另存事件监听
exitItem.addActionListener(this); //退出事件监听
selectItem.addActionListener(this); //查找事件监听
copyItem.addActionListener(this); //复制事件监听
cutItem.addActionListener(this); //剪切事件监听
pasteItem.addActionListener(this); //粘贴事件监听
editUndoItem.addActionListener(this);//撤消事件监听
helpItem.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
Object eventSource = e.getSource();//利用事件源判断被单击的菜单项
if (eventSource == newItem)
{
textArea.setText("");//新建时清空文本区
}
else if (eventSource == openItem)
{
openFileDialog.show();//显示打开文件对话框
fileName = openFileDialog.getDirectory() + openFileDialog.getFile();
if (fileName != null) //当文件名为空,读取文件名
readFile(fileName);
}
else if (eventSource == saveItem) //保存事件触发
{
if (fileName != null) //当文件名为空,写文件名 ,保存
writeFile(fileName);
else
{
saveAsFileDialog.show();
fileName = saveAsFileDialog.getDirectory() + saveAsFileDialog.getFile()+".txt";
if (fileName != null) //当文件名为空,写文件名,保存
writeFile(fileName);
}
}
else if (eventSource == saveAsItem)
{
saveAsFileDialog.show();
fileName = saveAsFileDialog.getDirectory() + saveAsFileDialog.getFile();
if (fileName != null) //当文件名为空,写文件名,保存
writeFile(fileName);
}
else if (eventSource == selectItem) //查找事件触发
{
textArea.selectAll();
}
else if (eventSource == copyItem) //复制事件触发
{
String text = textArea.getSelectedText();
StringSelection selection = new StringSelection(text);
clipBoard.setContents(selection, null);
}
else if (eventSource == cutItem) //剪切事件触发
{
String text = textArea.getSelectedText(); //text对象初始化
StringSelection selection = new StringSelection(text); //查找事件实例化
clipBoard.setContents(selection, null);
//剪切时用空字符串代替被选的字符
textArea.replaceRange("", textArea.getSelectionStart(), textArea.getSelectionEnd());
}
else if (eventSource == pasteItem) //粘贴事件触发
{
Transferable contents = clipBoard.getContents(this); //对象初始
if (contents == null) return;
String text;
text = ""; //文本为空
//异常处理
try
{
text = (String)contents.getTransferData(DataFlavor.stringFlavor);
}
catch (Exception exception)
{
}
textArea.replaceRange(text, textArea.getSelectionStart(), textArea.getSelectionEnd());
}
else if (eventSource==helpItem)
{
JOptionPane.showMessageDialog(null,"该程序为一个简单的文本编辑器,点击菜单相应项可进行相关操作!");
}
else if (eventSource == exitItem)
{
System.exit(0);
}
}
public void readFile(String fileName) //文件读取方法
{
//异常处理
try
{
File file = new File(fileName);
FileReader readIn = new FileReader(file);
int size = (int)file.length();
int charsRead = 0;
char[] content = new char[size];
while (readIn.ready())
charsRead += readIn.read(content, charsRead, size - charsRead);
readIn.close();
textArea.setText(new String(content, 0, charsRead));
}
catch (IOException e) //捕获异常
{
System.out.println("Error opening file!");
}
}
public void writeFile(String fileName)
{
try
{
File file = new File(fileName);
FileWriter writeOut = new FileWriter(file);
writeOut.write(textArea.getText());
writeOut.close();
}
catch (IOException e)
{
System.out.println("Error writing file!");
}
}
public static void main(String[] args) //窗体初始
{
Frame frame = new EditorFrame();//调用函数
frame.show();
}
}
评论0