请JAVA高手讲下记事本小程序的设计思路谢谢!!

样子就是跟windows的记事本一模一样的...外形而已..... 样子就是跟windows的记事本一模一样的...外形而已.. 展开
 我来答
梦想与付出
2008-06-27 · TA获得超过651个赞
知道答主
回答量:235
采纳率:0%
帮助的人:207万
展开全部
/**一个类似于视窗系统里记事本的程序
* 可以对文本文件进行简单的编辑和浏览
*/
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();
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ljydd
2008-06-27 · TA获得超过239个赞
知道小有建树答主
回答量:213
采纳率:0%
帮助的人:261万
展开全部
原来写的,只有打开文件和保存文件
你研究研究吧

import java.awt.*;
import java.awt.event.*;
import java.io.*;

public class tt
extends Frame
implements ActionListener {
static tt frm = new tt();
static MenuBar menubar = new MenuBar();
static Menu menu1 = new Menu("文件");
static MenuItem item1 = new MenuItem("打开");
static MenuItem item2 = new MenuItem("保存");

static FileDialog dia1 = new FileDialog(frm, "打开");
static FileDialog dia2 = new FileDialog(frm, "保存", FileDialog.SAVE);
static TextArea txa = new TextArea();

static WinLis wlis = new WinLis();

public static void main(String agrs[]) {
BorderLayout br = new BorderLayout();
frm.setTitle("小记事本");

menubar.add(menu1);

menu1.add(item1);
menu1.add(item2);

item1.addActionListener(frm);
item2.addActionListener(frm);

frm.add(txa);

frm.setMenuBar(menubar);

frm.setSize(800, 650);
frm.setVisible(true);

frm.addWindowListener(wlis);
frm.addWindowListener(wlis);
}

static class WinLis
extends WindowAdapter {
public void windowClosing(WindowEvent e) {
frm.dispose();
}

}

public void actionPerformed(ActionEvent e) {
MenuItem item = (MenuItem) e.getSource();
if (item == item1) {
dia1.setVisible(true);

String fname = dia1.getDirectory() + dia1.getFile();
try {
FileInputStream fi = new FileInputStream(fname);
byte ba[] = new byte[fi.available()];
fi.read(ba);
txa.setText(new String(ba));
fi.close();
}
catch (IOException ioe) {}
;
}
if (item == item2) {
System.out.println("++++");
dia2.setVisible(true);
String fname2 = dia2.getDirectory();
File file = new File(dia2.getFile() + ".txt");
System.out.println("--" + fname2);
System.out.println("" + file);
String s = txa.getText();

try {
BufferedWriter out = new BufferedWriter(new FileWriter(fname2 + file));
out.write(s);
out.close();

}
catch (Exception ioe) {
ioe.printStackTrace();
}

}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
雅嘻嘻oo
2008-06-27 · TA获得超过124个赞
知道答主
回答量:74
采纳率:0%
帮助的人:0
展开全部
用swing.然后设计菜单.这些你该会吧.保存功能用流把写的东西提取然后写到一个文本里.关键是撤销.这要好好设计下.比如点了保存就不能撤销.撤销功能要怎么来实现.可以吧之前写的东西存入集合里等..
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友1dec69e33
2008-06-27 · TA获得超过691个赞
知道小有建树答主
回答量:454
采纳率:0%
帮助的人:0
展开全部
同上,用java.swing先把大框架搭出来,大框架搭出来后,就是具体的JAVA代码实现了,没什么好说的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式