展开全部
/**一个类似于视窗系统里记事本的程序
* 可以对文本e69da5e6ba9062616964757a686964616f31333236376633文件进行简单的编辑和浏览
*/
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
import java.io.*;
public class TextEditor {
char buffer[]=new char[1024];
String sou="";
String des="";
long souTime,desTime;
JFrame mainWindow=new JFrame("文本编辑器");
JMenuBar menuBar=new JMenuBar();
JMenu fileMenu=new JMenu("文件");
JMenu helpMenu=new JMenu("帮助");
JMenuItem openItem=new JMenuItem("打开");
JMenuItem saveItem=new JMenuItem("保存");
JMenuItem resaveItem=new JMenuItem("另存为");
JMenuItem exitItem=new JMenuItem("退出");
JMenuItem helpItem=new JMenuItem("关于文本编辑器");
JTextArea textArea=new JTextArea(15,30);
JScrollPane js = new JScrollPane();
JLabel labelInfo=new JLabel("状态栏");
Listener listen=new Listener();
JFileChooser openDialog=new JFileChooser("F:\\");
//窗体初始化方法
public void init(){
//把菜单项加入到菜单栏中
menuBar.add(fileMenu);
menuBar.add(helpMenu);
fileMenu.add(openItem);
fileMenu.add(saveItem);
fileMenu.add(resaveItem);
fileMenu.addSeparator();
fileMenu.add(exitItem);
helpMenu.add(helpItem);
//给菜单组件添加监听器
openItem.addActionListener(listen);
saveItem.addActionListener(listen);
resaveItem.addActionListener(listen);
exitItem.addActionListener(listen);
helpItem.addActionListener(listen);
js.getViewport().setView(textArea);
//添加窗体中的组件
mainWindow.setJMenuBar(menuBar);
mainWindow.getContentPane().add(js,BorderLayout.CENTER);
mainWindow.getContentPane().add(labelInfo,BorderLayout.SOUTH);
//mainWindow.setBounds(0, 0, 300, 300);
mainWindow.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
//窗口监听事件,当关闭窗口时触发
mainWindow.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
//System.exit(0);
if(sou.equals("")){
int len=JOptionPane.showConfirmDialog(mainWindow,"文件未保存,是否保存");
if(len==JOptionPane.NO_OPTION) System.exit(0);
else{
if(len==JOptionPane.YES_OPTION){
len=openDialog.showSaveDialog(mainWindow);
if(len==JFileChooser.APPROVE_OPTION){
File exitFile=openDialog.getSelectedFile();
des=textArea.getText();
save(exitFile);
sou=des;
if(exitFile.exists()) labelInfo.setText(exitFile.getPath()+"保存成功");
System.exit(0);
}
else labelInfo.setText("返回原程序");
}
else labelInfo.setText("返回原程序");
}
}
else{
des=textArea.getText();
labelInfo.setText("退出程序");
if(sou.equals(des)==false){
int len=JOptionPane.showConfirmDialog(mainWindow,"文件未保存,是否保存");
if(len==JOptionPane.NO_OPTION) System.exit(0);
else{
if(len==JOptionPane.YES_OPTION){
len=len=openDialog.showSaveDialog(mainWindow);
File exitFile=openDialog.getSelectedFile();
des=textArea.getText();
save(exitFile);
if(exitFile.exists()) labelInfo.setText(exitFile.getPath()+"保存成功");
}
else labelInfo.setText("返回原程序");
}
}
else System.exit(0);
}
}
});
//按适合的大小显示窗体于屏幕中央
mainWindow.pack();
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
mainWindow.setSize(300,200);
Dimension frameSize = mainWindow.getPreferredSize();
if(frameSize.height > screenSize.height){
frameSize.height = screenSize.height;
}
if(frameSize.width > screenSize.width){
frameSize.width = screenSize.width;
}
mainWindow.setLocation(( (screenSize.width - frameSize.width) / 2),
( (screenSize.height - frameSize.height) / 2));
mainWindow.setSize(frameSize);
mainWindow.setVisible(true);
}
//菜单组件监听器类
class Listener implements ActionListener{
public void actionPerformed(ActionEvent e){
String command=e.getActionCommand();
//“打开”菜单项处理动作
if(command.equals("打开")){
int len=openDialog.showOpenDialog(mainWindow);
File openFile=openDialog.getSelectedFile();
if(len==JFileChooser.APPROVE_OPTION){
open(openFile);
souTime=openFile.lastModified();
}
}
//“保存”菜单项处理动作
if(command.equals("保存")){
if(sou.equals("")){
int len=openDialog.showSaveDialog(mainWindow);
if(len==JFileChooser.APPROVE_OPTION){
File resaveFile=openDialog.getSelectedFile();
des=textArea.getText();
save(resaveFile);
sou=des;
if(resaveFile.exists()) labelInfo.setText(resaveFile.getPath()+"保存成功");
}
}
else{
File saveFile=openDialog.getSelectedFile();
des=textArea.getText();
if(sou.equals(des)==false){
save(saveFile);
sou=des;}}
}
//“另存为”菜单项处理动作
if(command.equals("另存为")){
int len=openDialog.showSaveDialog(mainWindow);
if(len==JFileChooser.APPROVE_OPTION){
File resaveFile=openDialog.getSelectedFile();
des=textArea.getText();
save(resaveFile);
if(resaveFile.exists()) labelInfo.setText(resaveFile.getPath()+"保存成功");
}
else labelInfo.setText("返回原程序");
}
//“退出”菜单项处理动作
if(command.equals("退出")){
if(sou.equals("")){
int len=JOptionPane.showConfirmDialog(mainWindow,"文件未保存,是否保存");
if(len==JOptionPane.NO_OPTION) System.exit(0);
else{
if(len==JOptionPane.YES_OPTION){
len=openDialog.showSaveDialog(mainWindow);
if(len==JFileChooser.APPROVE_OPTION){
File exitFile=openDialog.getSelectedFile();
des=textArea.getText();
save(exitFile);
sou=des;
if(exitFile.exists()) {
labelInfo.setText(exitFile.getPath()+"保存成功");
}
System.exit(0);
}
else labelInfo.setText("返回原程序");
}
else labelInfo.setText("返回原程序");
}
}
else{
des=textArea.getText();
labelInfo.setText("退出程序");
if(sou.equals(des)==false){
int len=JOptionPane.showConfirmDialog(mainWindow,"文件未保存,是否保存");
if(len==JOptionPane.NO_OPTION) System.exit(0);
else{
if(len==JOptionPane.YES_OPTION){
len=len=openDialog.showSaveDialog(mainWindow);
File exitFile=openDialog.getSelectedFile();
des=textArea.getText();
save(exitFile);
if(exitFile.exists()) labelInfo.setText(exitFile.getPath()+"保存成功");
}
else labelInfo.setText("返回原程序");
}
}
else System.exit(0);
}
}
//“关于文本编辑器”菜单项处理动作
if(command.equals("关于文本编辑器")){
JOptionPane.showMessageDialog(null,"文本编辑器Version 0.7");
labelInfo.setText("返回原程序");
}
}
}
//打开文件方法
public void open(File file){
//String filePath=file.getParent()+"\\"+file.getName();
try{
FileReader in=new FileReader(file);
int len=in.read(buffer);
textArea.setText(new String(buffer,0,len));
sou=new String(buffer,0,len);
labelInfo.setText("打开"+file.getPath());
in.close();
}
catch(Exception e){}
}
//保存文件方法
public void save(File file){
try{
FileWriter out=new FileWriter(file);
buffer=des.toCharArray();
out.write(buffer);
out.close();
desTime=file.lastModified();
if(desTime!=souTime&&file.exists()) {
labelInfo.setText(file.getPath()+"保存成功");
souTime=desTime;}
}
catch(Exception e){}
}
public static void main(String[] args) {
new TextEditor().init();
}
}
已赞过
已踩过<
你对这个回答的评价是?
评论
收起