java设计记事本预期目标_请JAVA高手讲下记事本小程序的设计思路谢谢!!

展开全部

/**一个类似于视窗系统里记事本的程序

* 可以对文本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();

}

}

2Q==

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值