如何用java一步步编出一个记事本程序

我想开始做这个项目,但是不知道从哪里入手,请大家教一下我~但是不用提供那些长长的代码了,我有很多了,我要了解的是它的步骤,以及要具备那些基础等,请大家尽量帮一下我,这对我很重要,谢谢!

一、要创建一个Frame或者JFrame现在基本上都用后者
二、要建立你的控件,就是面板Jpanel菜单JMenu\JMenuItem等,写字板textArea等,
三、动作监听器,addActionListener
四、就是你的布局了

一下是一个可以运行的,你看看

package mySwing;

import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.awt.color.*;
import java.awt.font.*;

import javax.swing.plaf.metal.MetalLookAndFeel;
import javax.swing.undo.*;

public class Note extends JFrame {
boolean isChange = false;

boolean wasChange = false;

JMenuBar menuBar = new JMenuBar();

JMenu menuFile = new JMenu("File");

JMenuItem menuFileOpen = new JMenuItem("Open..");

JMenuItem menuFileSave = new JMenuItem("Save..");

JMenuItem menuFileExit = new JMenuItem("Exit");

JMenu menuEdit = new JMenu("Edit");

JMenuItem menuFileCut = new JMenuItem("Cut");

JMenuItem font = new JMenuItem("Font");

JMenuItem menuFilePaste = new JMenuItem("Paste");

JTextArea fileArea = new JTextArea();

public Note() {
//menuFile.setIcon(new ImageIcon("D:\\���컢���ļ�\\eclipswork\\MyTest\\bin\\remove.png"));
// fileArea.setBorder(BorderFactory.createTitledBorder("mytextArea"));
this.setTitle("���±�");
Toolkit tool = this.getToolkit();// ����ͼ�꣡
Image myimage = tool.getImage("����.jpg");
this.setIconImage(myimage);
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
exit();
}
});
menuFileOpen.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//fileOpen_actionPerformed(e);

}
});
menuFileSave.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
fileSave_actionPerformed(e);
}
});
menuFileExit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
fileExit_actionPerformed(e);
}
});
menuFileCut.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
fileCut_actionPerformed(e);
}
});
menuFilePaste.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
filePaste_actionPerformed(e);
}
});
font.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
fileColor_actionPerformed(e);
}
});
fileArea.getDocument().addDocumentListener(new DocumentListener() {
public void insertUpdate(DocumentEvent e) {
wasChange = isChange;
isChange = true;
}

public void removeUpdate(DocumentEvent e) {
wasChange = isChange;
isChange = true;
}

public void changedUpdate(DocumentEvent e) {
wasChange = isChange;
isChange = true;
}
});
setSize(500, 450);
menuBar.add(menuFile);
menuFile.setMnemonic('F');
menuBar.add(menuEdit);
menuEdit.setMnemonic('E');
menuFile.add(menuFileOpen);
menuFileOpen.setMnemonic('O');// ���ʽ�;
menuFileOpen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,
InputEvent.CTRL_MASK));// ��ݽ�;
menuFile.add(menuFileSave);
menuFileSave.setMnemonic('S');
menuFileSave.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,
InputEvent.CTRL_MASK));
menuFile.addSeparator();
menuFile.add(menuFileExit);
menuFileExit.setMnemonic('E');
menuEdit.add(menuFileCut);
menuFileCut.setMnemonic('C');
menuFileCut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,
InputEvent.CTRL_MASK));
menuEdit.add(menuFilePaste);
menuFilePaste.setMnemonic('P');
menuFilePaste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,
InputEvent.CTRL_MASK));
menuEdit.add(font);
font.setMnemonic('N');
font.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,
InputEvent.CTRL_MASK));
this.getContentPane().add(new JScrollPane(fileArea));
setJMenuBar(menuBar);
fileArea.setLineWrap(true);
}

public void fileExit_actionPerformed(ActionEvent e) {
System.exit(0);
}

public void fileOpen_actionPerformed(ActionEvent e) {
// ������filter;
JFileChooser fileChooser = new JFileChooser();
// fileChooser.addChoosableFileFilter(new
// myFilter("*.txt","Files(*.txt)"));
fileChooser.addChoosableFileFilter(fileChooser.getFileFilter());
if (fileChooser.APPROVE_OPTION != fileChooser.showOpenDialog(this))
return;
// �������ļ���
BufferedReader dataIn = null;
try {
dataIn = new BufferedReader(new FileReader(fileChooser
.getSelectedFile().getPath()));
String c = null;
do {
c = dataIn.readLine();
if (c != null)
fileArea.append(c + "\n");
} while (c != null);
} catch (Exception ex) {
System.out.println("Catch exception:" + ex.toString());
}
}

public void exit() {
if (isChange == false)
System.exit(1);
else {
int decision = JOptionPane.showConfirmDialog(this,
"The File has Change.\n"
+ "Do you want to save the change?", "Notepad",
JOptionPane.YES_NO_CANCEL_OPTION,
JOptionPane.WARNING_MESSAGE);
if (decision == JOptionPane.YES_OPTION) {
// �����ǽ��ļ�д������!
try {
JFileChooser fileSave = new JFileChooser();
fileSave.setDialogTitle("�����ļ�");
// fileSave.addChoosableFileFilter(new
// myFilter("*.txt","Files(*.txt)"));
fileSave.addChoosableFileFilter(fileSave.getFileFilter());
if (fileSave.APPROVE_OPTION != fileSave
.showSaveDialog(this))
return;
BufferedWriter dataOut = new BufferedWriter(
new BufferedWriter(new FileWriter(fileSave
.getSelectedFile())));
String c = null;
isChange = false;
do {
String str = fileArea.getText();
dataOut.write(str);
dataOut.close();
} while (c != null);
} catch (Exception e2) {
System.out.println("Catch exception:���!" + e2.toString());
}
} else if (decision == JOptionPane.NO_OPTION)
System.exit(1);
else if (decision == JOptionPane.CANCEL_OPTION)
;
;
}
// innerclass.fileSave_actionPerformed();
}

public void fileSave_actionPerformed(ActionEvent e1) {

// �����ǽ��ļ�д������!
try {
JFileChooser fileSave = new JFileChooser();
fileSave.setDialogTitle("�����ļ�");
// fileSave.addChoosableFileFilter(new
// myFilter("*.txt","Files(*.txt)"));
fileSave.addChoosableFileFilter(fileSave.getFileFilter());
if (fileSave.APPROVE_OPTION != fileSave.showSaveDialog(this))
return;
BufferedWriter dataOut = new BufferedWriter(new BufferedWriter(
new FileWriter(fileSave.getSelectedFile() + ".txt")));
// RandomAccessFile dataOut=new
// RandomAccessFile(fileSave.getSelectedFile(),"rw");
String c = null;
isChange = false;
do {
String str = fileArea.getText();
dataOut.write(str);
dataOut.close();
} while (c != null);
} catch (Exception e2) {
System.out.println("Catch exception:���!" + e2.toString());
}
}

public static void main(String arg[]) {
//new MyUIManager();
Note nt = new Note();
JLookAndFeelMenu menu = new JLookAndFeelMenu(nt);
nt.menuBar.add(menu);
nt.show();
}

public void fileCut_actionPerformed(ActionEvent e) {
fileArea.cut();
}

public void filePaste_actionPerformed(ActionEvent e) {
fileArea.paste();
}

public void fileColor_actionPerformed(ActionEvent e) {
JColorChooser fileColor = new JColorChooser();
// fileArea.setForeground(fileColor.showDialog(this,"��ɫ",Color.red));
// fileArea.setSelectionColor(fileColor.showDialog(this,"��ɫ",Color.red));
fileArea.setSelectionColor(fileColor
.showDialog(this, "��ɫ", Color.black));
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-03-23
首先是功能划分!
就是你要实现什么功能!
就拿windowsxp的notepad说,功能就那几个!
实现的功能划分出来就开始界面设计了!设计成什么样的,
菜单有哪些,怎么布局,这就开始设计界面部分了!
然后就开始代码,代码首先是写出界面!
然后添加相应的事件!
然后调试bug,这样一个记事本就完成了!
第2个回答  2009-03-23
把java swing,io包熟悉下 然后可以先把界面做出来 再实现功能
第3个回答  2009-03-23
首先你分析 你想写的记事本的功能是怎么样的
根据你的需求设计界面
核心当然是文件流的操作啦
第4个回答  2009-03-23
没学过JAVA,应该跟别的编程语言差不多吧?