编写一个类似windows记事本的简单程序

liuxianbin 2008-05-15 10:34:15
编写一个类似windows记事本的简单程序,该程序能够创建文件、读取已经存在的文件、查看和修改文本以及保存为文本文件。
...全文
594 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuxianbin 2008-05-16
  • 打赏
  • 举报
回复
Thank you very much!
duzhonghua 2008-05-16
  • 打赏
  • 举报
回复
呵呵,CSDN下载里面就有,做的挺漂亮的
刘彬彬 2008-05-16
  • 打赏
  • 举报
回复
主类:
import java.awt.*;
import javax.swing.*;
/**
* <p>
* Title: 程序编辑器
* </p>
* <p>
* Description: 增强的文本编辑程序
* </p>
* <p>
* Copyright: Copyright (c) 2005
* </p>
* <p>
* Company:
* </p>
*
* @author 红色彼岸
* @version 0.1
*/

public class ProE{
// 定义编辑器的窗体
private ProEFrame proEWindow;
// 定义编辑器程序本身
private static ProE proEApp;

/**
* 应用程序的开始点。
*
* @param args
* String[]
*/
public static void main(String[] args) {
proEApp = new ProE();
proEApp.init();
}
private void init() {
// 初始化窗体
proEWindow = new ProEFrame("程序编辑器");
Toolkit toolkit = proEWindow.getToolkit();
Dimension screenSize = toolkit.getScreenSize();
proEWindow.setBounds(0, 0, (int)screenSize.getWidth()/2, (int)screenSize.getHeight()/2);
proEWindow.setVisible(true);
}
}
刘彬彬 2008-05-16
  • 打赏
  • 举报
回复
// 测试用的方法
MenuItemEventHandler menuItemHandler = new MenuItemEventHandler();
newItem.addActionListener(menuItemHandler);
openItem.addActionListener(menuItemHandler);
saveItem.addActionListener(menuItemHandler);
saveAsItem.addActionListener(menuItemHandler);
pageSetItem.addActionListener(menuItemHandler);
printItem.addActionListener(menuItemHandler);
exitItem.addActionListener(menuItemHandler);
undoItem.addActionListener(menuItemHandler);
cutItem.addActionListener(menuItemHandler);
copyItem.addActionListener(menuItemHandler);
pasteItem.addActionListener(menuItemHandler);
deleteItem.addActionListener(menuItemHandler);
findItem.addActionListener(menuItemHandler);
findNextItem.addActionListener(menuItemHandler);
replaceItem.addActionListener(menuItemHandler);
goToLineItem.addActionListener(menuItemHandler);
selectAllItem.addActionListener(menuItemHandler);
timeItem.addActionListener(menuItemHandler);
autoNextLineItem.addActionListener(menuItemHandler);
fontItem.addActionListener(menuItemHandler);
helpItem.addActionListener(menuItemHandler);
aboutItem.addActionListener(menuItemHandler);
}

// 辅助方法:为菜单或者菜单项设定快捷键
private void setQuickKey(AbstractButton button, char quickKey) {
String type = button.getClass().getName();
if(type.endsWith("JMenu"))
button.setMnemonic(quickKey);
else if(type.endsWith("JMenuItem")) {
JMenuItem menuItem = (JMenuItem)button;
menuItem.setAccelerator(KeyStroke.getKeyStroke(quickKey, InputEvent.CTRL_MASK));
}
}

// 内部方法:响应菜单事件
private void newPerformed() {
savePerformed();
textArea.setText("");
}
private void openPerformed() {
BufferedReader input = null;
String text;
int ret = fileChooser.showOpenDialog(this);
if(ret != JFileChooser.APPROVE_OPTION)
return;
fileName = fileChooser.getSelectedFile();
if(fileName.exists() && fileName.canRead()) {
setTitle("程序编辑器: " + fileName.getName());
textArea.setText("");
try{
input = new BufferedReader(new FileReader(fileName));
while((text = input.readLine()) != null)
textArea.append(text + "\n");
input.close();
}
catch(IOException e) {
JOptionPane.showMessageDialog(this, "文件打开错误,没有打开");
}
finally {
input = null;
}
}
}
private void savePerformed() {
PrintWriter output = null;
if(firstSave == true) {
saveAsPerformed();
firstSave = false;
}
else {
try{
output = new PrintWriter(new FileWriter(fileName));
output.write(textArea.getText());
}
catch(IOException e)
{
JOptionPane.showMessageDialog(this, "文件写入错误,没有保存");
}
finally {
output.close();
output = null;
}
}
}
private void saveAsPerformed() {
PrintWriter output = null;
int ret = fileChooser.showSaveDialog(this);
if(ret != JFileChooser.APPROVE_OPTION)
return;
fileName = fileChooser.getSelectedFile();
setTitle("程序编辑器: " + fileName.getName());
try{
output = new PrintWriter(new FileWriter(fileName));
output.write(textArea.getText());
}
catch(IOException e){
JOptionPane.showMessageDialog(this, "文件写入错误,没有保存");
}
finally{
output.close();
output = null;
}
}
private void pageSetPerformed() {
System.out.println("显示页面设置对话框");
}
private void printPerformed() {
System.out.println("显示打印对话框");
}
private void exitPerformed() {
savePerformed();
dispose();
}
private void undoPerformed() {
System.out.println("撤销");
}
private void cutPerformed() {
System.out.println("剪切");
}
private void copyPerformed() {
System.out.println("复制");
}
private void pastePerformed() {
System.out.println("粘贴");
}
private void deletePerformed() {
System.out.println("删除");
}
private void findPerformed() {
System.out.println("查找");
}
private void findNextPerformed() {
System.out.println("查找下一个");
}
private void replacePerformed() {
System.out.println("替换");
}
private void goToLinePerformed() {
System.out.println("转到");
}
private void selectAllPerformed() {
System.out.println("全选");
}
private void timePerformed() {
System.out.println("时间/日期");
}
private void autoNextLinePerformed() {
System.out.println("自动换行");
}
private void fontPerformed() {
System.out.println("字体");
}
private void helpPerformed() {
System.out.println("帮助主题");
}
private void aboutPerformed() {
JOptionPane.showMessageDialog(this, "简陋的编辑器");
}

/**
* <p>
* Title:
* </p>
* <p>
* Description: 处理菜单出发的事件
* </p>
* <p>
* Copyright: Copyright (c) 2005
* </p>
* <p>
* Company:
* </p>
*
* @author 崔海成
* @version 0.1
*/
class MenuItemEventHandler implements ActionListener{
public void actionPerformed(ActionEvent e) {
JMenuItem item = (JMenuItem)e.getSource();
if(item == newItem)
newPerformed();
else if(item == openItem)
openPerformed();
else if(item == saveItem)
savePerformed();
else if(item == saveAsItem)
saveAsPerformed();
else if(item == pageSetItem)
pageSetPerformed();
else if(item == printItem)
printPerformed();
else if(item == exitItem)
exitPerformed();
else if(item == undoItem)
undoPerformed();
else if(item == cutItem)
cutPerformed();
else if(item == copyItem)
copyPerformed();
else if(item == pasteItem)
pastePerformed();
else if(item == deleteItem)
deletePerformed();
else if(item == findItem)
findPerformed();
else if(item == findNextItem)
findNextPerformed();
else if(item == replaceItem)
replacePerformed();
else if(item == goToLineItem)
goToLinePerformed();
else if(item == selectAllItem)
selectAllPerformed();
else if(item == timeItem)
timePerformed();
else if(item == autoNextLineItem)
autoNextLinePerformed();
else if(item == fontItem)
fontPerformed();
else if(item == helpItem)
helpPerformed();
else if(item == aboutItem)
aboutPerformed();
}
}
}
刘彬彬 2008-05-16
  • 打赏
  • 举报
回复
贴下偶写的代码,有2个类:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;

/**
* <p>
* Title: 程序编辑器
* </p>
* <p>
* Description: 增强的文本编辑程序
* </p>
* <p>
* Copyright: Copyright (c) 2005
* </p>
* <p>
* Company:
* </p>
*
* @author 红色彼岸
* @version 0.1
*/
class ProEFrame extends JFrame{
private JFileChooser fileChooser = new JFileChooser();

private JMenuBar menuBar;
private JMenu file, edit, format, help;
private JMenuItem newItem, openItem, saveItem, saveAsItem, pageSetItem, printItem, exitItem;
private JMenuItem undoItem, cutItem, copyItem, pasteItem, deleteItem, findItem, findNextItem, replaceItem, goToLineItem, selectAllItem, timeItem;
private JMenuItem autoNextLineItem, fontItem;
private JMenuItem helpItem, aboutItem;
private JTextArea textArea;
private JScrollPane scrollPane;
private final int TAB_SIZE = 4;

private File fileName;
private boolean firstSave = true;

public ProEFrame(String title) {
// 设置窗体的标题栏和默认关闭操作
super(title);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);

// 设置菜单栏和菜单的内容
menuBar = new JMenuBar();
file = new JMenu("文件(F)");
edit = new JMenu("编辑(E)");
format = new JMenu("格式(O)");
help = new JMenu("帮助(H)");
setQuickKey(file, 'F');
setQuickKey(edit, 'E');
setQuickKey(format, 'O');
setQuickKey(help, 'H');
newItem = new JMenuItem("新建(N)");
openItem = new JMenuItem("打开(O)...");
saveItem = new JMenuItem("保存(S)");
saveAsItem = new JMenuItem("另存为...");
pageSetItem = new JMenuItem("页面设置(U)...");
printItem = new JMenuItem("打印(P)...");
exitItem = new JMenuItem("退出");
setQuickKey(newItem, 'N');
setQuickKey(openItem, 'O');
setQuickKey(saveItem, 'S');
setQuickKey(pageSetItem, 'U');
setQuickKey(printItem, 'P');

file.add(newItem);
file.add(openItem);
file.add(saveItem);
file.add(saveAsItem);
file.addSeparator();
file.add(pageSetItem);
file.add(printItem);
file.addSeparator();
file.add(exitItem);

undoItem = new JMenuItem("撤销(Z)");
cutItem = new JMenuItem("剪切(X)");
copyItem = new JMenuItem("复制(C)");
pasteItem = new JMenuItem("粘贴(V)");
deleteItem = new JMenuItem("删除");
findItem = new JMenuItem("查找(F)...");
findNextItem = new JMenuItem("查找下一个");
replaceItem = new JMenuItem("替换(R)...");
goToLineItem = new JMenuItem("转到(G)...");
selectAllItem = new JMenuItem("全选(A)");
timeItem = new JMenuItem("时间/日期");

setQuickKey(undoItem, 'Z');
setQuickKey(cutItem, 'X');
setQuickKey(copyItem, 'C');
setQuickKey(pasteItem, 'V');
setQuickKey(findItem, 'F');
setQuickKey(replaceItem, 'R');
setQuickKey(goToLineItem, 'G');
setQuickKey(selectAllItem, 'A');

edit.add(undoItem);
edit.addSeparator();
edit.add(cutItem);
edit.add(copyItem);
edit.add(pasteItem);
edit.add(deleteItem);
edit.addSeparator();
edit.add(findItem);
edit.add(findNextItem);
edit.add(replaceItem);
edit.add(goToLineItem);
edit.addSeparator();
edit.add(selectAllItem);
edit.add(timeItem);

autoNextLineItem = new JMenuItem("自动换行(W)");
fontItem = new JMenuItem("字体...");

setQuickKey(autoNextLineItem, 'W');

format.add(autoNextLineItem);
format.add(fontItem);

helpItem = new JMenuItem("帮助主题(H)");
aboutItem = new JMenuItem("关于ProE");

setQuickKey(helpItem, 'H');

help.add(helpItem);
help.add(aboutItem);

menuBar.add(file);
menuBar.add(edit);
menuBar.add(format);
menuBar.add(help);
setJMenuBar(menuBar);

textArea = new JTextArea();
textArea.setTabSize(TAB_SIZE);
scrollPane = new JScrollPane(textArea);
this.getContentPane().add(scrollPane, BorderLayout.CENTER);

老紫竹 2008-05-16
  • 打赏
  • 举报
回复
偷偷的说:主要原因是,我不会.....
所以 就不告诉你。
Pol 2008-05-16
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 bao110908 的回复:]
在 %JDK_HOME%/demo/jfc 目录下,有 Notepad 和 Stylepad 一个是记事本,一个是带格式的写字板。

都是用 Swing 做的,挺漂亮的,直接点 Notepad.jar 或 Stylepad.jar 就能直接运行,src 下面是源代码。
[/Quote]

呵呵..我还想这么说..
  • 打赏
  • 举报
回复
在 %JDK_HOME%/demo/jfc 目录下,有 Notepad 和 Stylepad 一个是记事本,一个是带格式的写字板。

都是用 Swing 做的,挺漂亮的,直接点 Notepad.jar 或 Stylepad.jar 就能直接运行,src 下面是源代码。
laorer 2008-05-15
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 java2000_net 的回复:]
GUI部分
1 我不会GUI
2 就算我会,我也不告诉你,因为你太懒。
[/Quote]
......打击楼主了,不过楼上说的对,网上随便一搜就一堆的这种代码,如果想要个思路应该还是会给的吧,呵呵
loujianchengdd 2008-05-15
  • 打赏
  • 举报
回复
呵呵,顶下吧
ThirdDimension 2008-05-15
  • 打赏
  • 举报
回复
亲爱的LZ:
类似文件读写的帖子在论坛里数不胜数,你可以在论坛里搜索。
manbaum 2008-05-15
  • 打赏
  • 举报
回复
哈哈 java2000_net 好累
老紫竹 2008-05-15
  • 打赏
  • 举报
回复
GUI部分
1 我不会GUI
2 就算我会,我也不告诉你,因为你太懒。
psyl 2008-05-15
  • 打赏
  • 举报
回复
这个不算是问题吧。。 起码你得有个具体问题来问。 你想让他帮你写个记事本?? 。。 汗
zuoguodang 2008-05-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 yirentianran 的回复:]
是来要代码的吗?
[/Quote]
我认为你应该自己写个,参照着API
janeyshone5522 2008-05-15
  • 打赏
  • 举报
回复
先自己查下相關資料!這樣印象更加深刻
胡矣 2008-05-15
  • 打赏
  • 举报
回复
是来要代码的吗?

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧