跟我学做记事本-编程实例

记事本简单好玩的编程代码 记事本代码入门视频记事本简单好玩的编程代码 记事本代码入门视频


记事本简单好玩的编程代码 记事本代码入门视频


记事本简单好玩的编程代码 记事本代码入门视频


用VB做一个记事本实在不很复杂,我们完全可以通过向导来很方便地做出来。但本文只打算讨论用手动方法制作记事本,旨在向VB初学者展示:学VB原来是如此容易!

通过阅读、研究本文并按本文所述进行尝试,初学者将学到很多东西,如怎样使用RichText控件来打开和保存文件,怎样制作菜单、工具栏和状态栏以及如何对其编写代码等。

章 让我们的记事本马上运行

急于求成是初学者共有的心愿。那好,请按如下三个步骤做,我们的愿望立即就可以实现!

步骤一:绘制界面。

新建一个标准EXE工程,将其Caption属性改为“超级记事本”,点击Icon属性给它找个合适的Icon图标。单击菜单“工程”-“部件”,在弹出的“部件”对话框里找到Microsoft

RichText Box 6.0和公共对话框Microsoft Common Dialog 6.0并选中它们,单击“确定”按钮。这时左边的工具栏上出现了我们刚才新添的两个控件了。在窗体上绘制RichText

Box和Commn Dialog,其中RichText Box的大小和位置可不用理睬,我们将在代码中处理它,当然,有必要把它的ScrollBar属性设为2-rtfVertical,这样在打开和编辑文件时垂直滚动条才可用。

步骤二:编辑菜单。

按Ctrl+E调出菜单编辑器,我们来做如下几个菜单:

一.文件菜单:

文件(层) mnuFile

新建(第二层) mnuNew

打开(第二层) mnuOpen

保存(第二层) mnuSe

- (第二层) mnuFileSep (分隔线)

退出(第二层) mnuExit

二.编辑菜单:

编辑(层) mnuEdit

(第二层) mnuCopy

剪切(第二层) mnuCut

粘贴(第二层) mnuPaste

- (第二层) mnuEditSep (分隔线)

全选(第二层) mnuSelecAll

三.搜索菜单:

搜索(层) mnuSearch

查找(第二层) mnuFind

查找下一个(第二层) mnuFindOn

四.帮助菜单:

帮助(层) mnuHelp

使用说明(第二层) mnuUsage

关于(第二层) mnuAbout

(注:各菜单项的快捷键请自行设置)

好了,其它的菜单项以后再根据需要添加。现在进入:

步骤三:编写代码。

'声明查找变量

Dim sFind As String

'声明文件类型

Dim FileType, FiType As String

'初始化程序

Private Sub Form_Load()

'设置程序启动时的大小

Me.Height = 6000

Me.Width = 9000

End Sub

'设置编辑框的位置和大小

Private Sub Form_Resize()

On Error Resume Next '出错处理

RichTextBox1.Top=20

RichTextBox1.Left=20

RichTextBox1.Height = ScaleHeight-40

RichTextBox1.Width = ScaleWidth-40

End Sub

'新建文件

Private Sub mnuNew_Click()

RichTextBox1.Text = "" '清空文本框

FileName = "未命名"

Me.Caption = FileName

End Sub

'打开文件

Private Sub mnuOpen_Click()

CommonDialog1.Filter = "文本文档(.txt)|.txt|RTF文档(.rtf)|.rtf|所有文件(.)|."

CommonDialog1.ShowOpen

RichTextBox1.Text = "" '清空文本框

FileName = CommonDialog1.FileName

RichTextBox1.LoadFile FileName

Me.Caption = "超级记事本:" & FileName

End Sub

'保存文件

Private Sub mnuSe_Click()

CommonDialog1.Filter = "文本文档(.txt)|.txt|RTF文档(.rtf)|.rtf|所有文件(.)|."

CommonDialog1.ShowSe

FileType = CommonDialog1.FileTitle

FiType = LCase(Right(FileType, 3))

FileName = CommonDialog1.FileName

Select Case FiType

Case "txt"

RichTextBox1.SeFile FileName, rtfText

Case "rtf"

RichTextBox1.SeFile FileName, rtfRTF

Case "."

RichTextBox1.SeFile FileName

End Select

Me.Caption = "超级记事本:" & FileName

End Sub

'退出

Private Sub mnuExit_Click()

End

End Sub

'

Private Sub mnuCopy_Click()

Clipboard.Clear

Clipboard.SetText RichTextBox1.SelText

End Sub

'剪切

Private Sub mnuCut_Click()

Clipboard.Clear

Clipboard.SetText RichTextBox1.SelText

RichTextBox1.SelText = ""

End Sub

'全选

Private Sub mnuSelectAll_Click()

RichTextBox1.SelStart = 0

RichTextBox1.SelLength = Len(RichTextBox1.Text)

End Sub

'粘贴

Private Sub mnuPaste_Click()

RichTextBox1.SelText = Clipboard.GetText

End Sub

'查找

Private Sub mnuFind_Click()

sFind = InputBox("请输入要查找的字、词:", "查找内容",

sFind)

RichTextBox1.Find sFind

End Sub

'继续查找

Private Sub mnuFindOn_Click()

RichTextBox1.SelStart = RichTextBox1.SelStart + RichTextBox1.SelLength + 1

RichTextBox1.Find sFind, , Len(RichTextBox1)

End Sub

'使用说明

Private Sub mnuReadme_Click()

On Error GoTo handler

RichTextBox1.LoadFile "Readme.txt", rtfText '请写好Readme.txt文件并存入程序所在文件夹中

Me.Caption = "超级记事本:" & "使用说明"

Exit Sub

handler:

MsgBox "使用说明文档可能已经被移除,请与作者联系。",

vbOKOnly, " 错误信息"

End Sub

'关于

Private Sub mnuAbout_Click()

MsgBox "超级记事本 Ver1.0 版权所有(C) 2001 土人",vbOKOnly,"关于"

End Sub

'设置弹出式菜单(即在编辑框中单击鼠标右键时弹出的动态菜单)

Private Sub RichTextBox1_MouseDown(Button As Integer, Shift As Integer, X As

Single, Y As Single)

If Button = 2 Then

PopupMenu mnuEdit, vbPopupMenuLeftAlign

Else

Exit Sub

End If

End Sub

'防止在切换输入法时字体自变(感谢王必成先生提供此方案)

Private Sub RichTextBox1_KeyUp(KeyCode As Integer, Shift As Integer)

If KeyCode = vbKeySpace Then

RichTextBox1.SelFontName = CommonDialog1.FontName

End If

End Sub

至此,我们的记事本可以编译使用了。点击菜单“文件”-“生成XXX.EXE”,回到桌面运行我们的记事本看看,是不是颇有成就感?

当然,这样的记事本还比较粗糙,我们还需要做些工作,请看下一章。

第二章 美化程序界面

多数字处理软件都有工具栏和状态栏。工具栏和状态栏除了能美化我们的程序使其更具有专业性质外,还给用户带来作上的便利。现在我们就来做一做这两样东西。

一.工具栏

(一)制作工具栏

单击“工程”-“部件”,选中Microsoft Windows Common Control 6.0并确定。这时,我们要用到的控件就出现在左边的工具栏上了。

要做工具栏,首先需要一个叫ImageList的控件来装载图像。在程序界面上添加它,然后右键单击此控件,左键单击“属性”,弹出“属性页”对话框的“图像”,再单击“插入”就可以一次性装载了(如不满意,以后还可以添加)。可在C:Microsoft

Visual StudioCommonGraphicsBitmapsTlBr_W95下选择(这里设你的VB安装在C盘下)。注意了:在插入时给每一张注明关键字,以便在引用时不至于混乱。如插入“新建”的,我们在“关键字”栏注明“New”。

有了,接下来在程序界面添加工具栏(ToolBar)。添加后工具栏就出现在菜单下面,右键单击它,选择“属性”,在弹出的“属性页”对话框中的“通用”项作些设置,主要如下两项:

1.“图像列表”:选择ImageList1

2.“样式”:根据喜爱选择1-trbStandard或者2-trbFlat

继续点击“属性页”的“按钮”选项,插入若干按钮。按钮有多种样式,请根据需要设置。这里请一定注意:每一个与用户作有关的按钮都必须注明关键字、装载,如“新建”按钮,在“关键字”项注明“新建”,在“图像”项键入“New”(即ImageList1中的关键字),需要的话还可以在“工具提示文本”项填入适当的提示语。

(二)编写工具栏的按钮代码

工具栏按钮的代码编辑很简单,可以按照下面的格式去编写:

Private Sub ToolBar1_ButtonClick(ByVal Button As MSComctlLib.Button)

On Error Resume Next '出错处理

Select Case Button.Key '按关键字选择

Case "新建"

mnuNew_Click '等于菜单项“新建”被单击

Case "打开" '等于菜单项“打开”被单击

mnuOpen_Click

'......(继续编写其它按钮的代码)

End Select

End Sub

完成后试运行一下我们的程序,我们发现,有了工具栏之后,程序变得漂亮多了,只是有一个问题:打开一个较长的文档后,编辑框的下拉滚动条向上的箭头不见了。原因是:工具条占用一定的空间。解决方法:将“设置编辑框的位置和大小”中的RichTextBox1.Top

= 20 和 RichTextBox1.Height = Me.ScaleHeight - 40分别改为RichTextBox1.Top =

380,RichTextBox1.Height = Me.ScaleHeight - 400即可。

二.状态栏

(一)制作状态栏

状态栏的英文名字叫StatusBar,在窗体上添加它后会默认出现在窗体的下方。用鼠标右键点击它,调出“属性页”对话框,单击“窗格”项,插入一些窗格,可以将各个窗格的“样式”设置为:

0-rText 显示文本,需编写代码

1-rCaps 显示大小写状态,无需编程

2-rNum 显示NumLock键开关状态,无需编程

3-rIns 显示Insert键状态,无需编程

4-rScr1

5-rTime 显示时间,不编程时时间不会随系统时钟变化

6-rDate 显示日期,无需编程

注意:加进状态栏后需将Form_Resze中的RichTextBox1.Height =

Me.ScaleHeight - 400改为RichTextBox1.Height = Me.ScaleHeight - 600。

(二)状态栏根据其“样式”属性决定用不用编写代码(如上文所述)。下面举些例子,读者可以认真揣摩,从而达到举一反三的效果。

例一:用户选取了“新建”后,让个窗格显示:“目前状态:正在打开文件《……》”。请将下面代码写进“打开”菜单里面:

StatusBar1.Panels(1).Text = "目前状态:正在打开文件"

& "《" &CommonDialog1.FileTitle & "》"

例二:让第三个窗格显示时间并让时间跟随系统时钟变化。

首先,给程序加一个Timer控件,将其Interval属性设为1000。然后:

在Form_Load过程加入:StatusBar1.Panels(1).Text = Time;然后给Timer控件编写代码:

Private Sub Timer1_Timer()

If StatusBar1.Panels(3).Text <> CStr(Time) Then

StatusBar1.Panels(3).Text = Time

End If

End Sub

例三:当编辑框的文本发生变化时让个窗格显示:“正在编辑文档:文件名”。

Private Sub RichTextBox1_Chang()

StatusBar1.Panels(1).Text = "正在编辑文档:" &

CommonDialog1.FileName

End Sub

辛苦了那么久,我们现在已经拥有一个象模象样的记事本了。这个记事本由于用了RichText控件,理论上它能打开和编辑任意大的文档,使用起来的确比Windows自带的记事本方便得多。当然,还有一些其它的功能需要添加和完善,这就靠你慢慢去完成了。

记事本和IDE环境不同的就是IDE有帮助和格式,而记本事一切靠自己

这个是我以前写着玩的一个例子,可以运行起来看看,有保存,撤销,,剪切功能,自己研究研究

package test;

import ja.awt.Font;

import ja.awt.nt.ActionEvent;

import ja.awt.nt.ActionListener;

import ja.awt.nt.WindowEvent;

import ja.awt.nt.WindowListener;

import ja.io.File;

import ja.io.FileReader;

import ja.io.FileWriter;

import ja.io.IOException;

import jax.swing.JFileChooser;

import jax.swing.JFrame;

import jax.swing.JMenu;

import jax.swing.JMenuBar;

import jax.swing.JMenuItem;

import jax.swing.JOptionPane;

import jax.swing.JScrollPane;

import jax.swing.JTextArea;

public class MyNote {

private JFrame frame = new JFrame("记事本");

private JTextArea text = new JTextArea();

private static boolean flag = false; // 判断是否保存

public MyNote() {

JMenuBar bar = new JMenuBar();

JMenu edit = new JMenu("check");

JMenu check = new JMenu("edit");

JMenu = new JMenu("");

JMenuItem term = new JMenuItem("copy");

JMenuItem term1 = new JMenuItem("paste");

JMenuItem term2 = new JMenuItem("cut");

JMenuItem term3 = new JMenuItem("backout");

JMenuItem term4 = new JMenuItem("import");

JMenuItem term5 = new JMenuItem("open");

JMenuItem term6 = new JMenuItem("exit");

JMenuItem term7 = new JMenuItem("se to");

JMenuItem term8 = new JMenuItem("about");

JMenuItem term9 = new JMenuItem("se");

JMenuItem term10 = new JMenuItem("new");

Font font = new Font(null, JFrame.ABORT, 24);

text.setFont(font);

JScrollPane scroll = new JScrollPane(text);

frame.setJMenuBar(bar);

bar.add(edit);

bar.add(check);

bar.add();

edit.add(term7);

edit.add(term4);

edit.add(term5);

edit.add(term6);

check.add(term);

check.add(term1);

check.add(term2);

check.add(term3);

.add(term8);

check.add(term9);

edit.add(term10);

frame.add(scroll);

text.setVisible(false);

frame.setSize(400, 400);

frame.setVisible(true);

frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

frame.setLocation(500, 500);

// 注册

MenuListener m = new MenuListener();

term5.addActionListener(m);

NewListener n = new NewListener();

term4.addActionListener(n);

SeListener s = new SeListener();

term7.addActionListener(s);

CopyListener c = new CopyListener();

term.addActionListener(c);

PasteListener p = new PasteListener();

term1.addActionListener(p);

CutListener c1 = new CutListener();

term2.addActionListener(c1);

HelpListener h = new HelpListener();

term8.addActionListener(h);

ExitListener e = new ExitListener();

term6.addActionListener(e);

CloseListener c2 = new CloseListener();

frame.addWindowListener(c2);

BackOutListener b = new BackOutListener();

term3.addActionListener(b);

SeActionListener s1 = new SeActionListener();

term9.addActionListener(s1);

NewFileListener n1 = new NewFileListener();

term10.addActionListener(n1);

}private class MenuListener implements ActionListener {

public void actionPerformed(ActionEvent e) {

text.setVisible(true);

}}

// 打开新文件

private class NewListener implements ActionListener {

public void actionPerformed(ActionEvent e) {

text.setText("");

JFileChooser fileChooser = new JFileChooser();

int r = fileChooser.showOpenDialog(frame);

if (r == JFileChooser.APPROVE_OPTION) {

try {

File file = fileChooser.getSelectedFile();

FileReader fr = new FileReader(file);

char[] buf = new char[1024];

int len = 0;

while ((len = fr.read(buf)) != -1) {

text.append(new String(buf, 0, len));

}fr.close();

} catch (IOException e1) {

e1.printStackTrace();

}}

}}

// 另存为

private class SeListener implements ActionListener {

public void actionPerformed(ActionEvent e) {

JFileChooser filechoose = new JFileChooser();

int r = filechoose.showSeDialog(frame);

if (r == JFileChooser.APPROVE_OPTION) {

File file = filechoose.getSelectedFile();

try {

FileWriter writer = new FileWriter(file);

writer.write((String) text.getText());

writer.close();

// 下面方法也可以

/

PrintWriter print=new PrintWriter(file);

print.write(text.getText()); print.close();

/

} catch (IOException e1) {

e1.printStackTrace();

}}

}}

//

private class CopyListener implements ActionListener {

public void actionPerformed(ActionEvent e) {

text.copy();

}}

// 粘贴

private class PasteListener implements ActionListener {

public void actionPerformed(ActionEvent e) {

text.paste();

}}

// 剪切

private class CutListener implements ActionListener {

public void actionPerformed(ActionEvent e) {

text.cut();

}}

// 关于主题

private class HelpListener implements ActionListener {

public void actionPerformed(ActionEvent e) {

JOptionPane.showMessageDialog(frame, "汪雄辉的记事本");

}}

private class ExitListener implements ActionListener {

public void actionPerformed(ActionEvent e) {

JOptionPane.showMessageDialog(frame, "谢谢!");

try {

Thread.sleep(2000);

System.exit(0);

} catch (InterruptedException e1) {

e1.printStackTrace();

}}

}private class CloseListener implements WindowListener {

public void windowActivated(WindowEvent e) {

}public void windowClosed(WindowEvent e) {

}// 关闭窗口

public void windowClosing(WindowEvent e) {

StringBuffer = new StringBuffer();

try {

FileReader fr = new FileReader("未命名文件.txt");

char[] buf = new char[1024];

int len = 0;

while ((len = fr.read(buf)) != -1) {

.append(new String(buf, 0, len));

}fr.close();

} catch (Exception e1) {

e1.getStackTrace();

}String s = .toString();

if (flag == false || !(text.getText().equals(s))) {

int r = JOptionPane.showConfirmDialog(frame, "你还没有保存,要保存吗?");

if (r == JOptionPane.OK_OPTION) {

JFileChooser filechoose = new JFileChooser();

int r1 = filechoose.showSeDialog(frame);

if (r1 == JFileChooser.APPROVE_OPTION) {

File file = filechoose.getSelectedFile();

try {

FileWriter writer = new FileWriter(file);

writer.write((String) text.getText());

writer.close();

System.exit(0);

// 下面方法也可以

/

PrintWriter print=new PrintWriter(file);

print.write(text.getText()); print.close();

/

} catch (IOException e1) {

e1.printStackTrace();

}} else {

}} else if (r == JOptionPane.NO_OPTION) {

System.exit(0);

} else {

}} else

System.exit(0);

}public void windowDeactivated(WindowEvent e) {

}public void windowDeiconified(WindowEvent e) {

}public void windowIconified(WindowEvent e) {

}public void windowOpened(WindowEvent e) {

}}

// 撤销

private class BackOutListener implements ActionListener {

public void actionPerformed(ActionEvent e) {

if (flag == false)

text.setText("");

else {

try {

FileReader fr = new FileReader("未命名文件.txt");

char[] buf = new char[1024];

int len = 0;

while ((len = fr.read(buf)) != -1) {

text.setText(new String(buf, 0, len));

}fr.close();

} catch (IOException e1) {

e1.getStackTrace();

}}

}}

// 保存文件

private class SeActionListener implements ActionListener {

public void actionPerformed(ActionEvent e) {

flag = true;

FileWriter writer;

try {

writer = new FileWriter("未命名文件.txt");

writer.write((String) text.getText());

writer.close();

} catch (IOException e1) {

e1.printStackTrace();

}}

}private class NewFileListener implements ActionListener {

public void actionPerformed(ActionEvent e) {

new MyNote();

}}

public static void main(String[] args) {

new MyNote();

}}

有截图的,功能基本能够实现!

记事本可以编辑C语言。下面,我们来看看如何利用记事本进行c语言编程吧。

记事本

新建一张记事本,修改名称为【hello world】,如下图所示:

编写代码:

#include

main() {

printf("hello worldn");

}保存记事本

然后保存记事本,修改后缀名为【.c】,如下图所示:

就会变成C语言代码了,如下图所示:

1楼的很详细了,我的这个跟楼主要求的功能不多,楼主可以借鉴我们2个的程序改进下

import jax.swing.;

import jax.swing.undo.UndoMar;

import ja.awt.;

import ja.awt.nt.;

import ja.io.;

public class Notepad extends JFrame implements ActionListener

{UndoMar undoMar = new UndoMar();

Container container;

JMenuBar bar;

JMenu 文件, 编辑;

JMenuItem 新建, 打开, 保存, 另存为, 退出;

JMenuItem 查找;

JTextPane jtext;

JScrollPane jscroll;

static Notepad np;

private int index = 0;

public Notepad()

{jtext = new JTextPane();

jscroll = new JScrollPane();

container = getContentPane();

bar = new JMenuBar();

文件 = new JMenu("文件");

编辑 = new JMenu("编辑");

新建 = new JMenuItem("新建");

打开 = new JMenuItem("打开");

保存 = new JMenuItem("保存");

另存为 = new JMenuItem("另存为");

退出 = new JMenuItem("退出");

查找 = new JMenuItem("查找");

文件.add(新建);

文件.add(打开);

文件.add(保存);

文件.add(另存为);

文件.addSeparator();

文件.add(退出);

编辑.add(查找);

bar.add(文件);

bar.add(编辑);

setJMenuBar(bar);

container.setLayout(new BorderLayout());

jscroll.getViewport().setView(jtext);

container.add(jscroll);

jtext.setBackground(Color.WHITE);

jtext.getDocument().addUndoableEditListener(undoMar);

新建.addActionListener(this);

打开.addActionListener(this);

保存.addActionListener(this);

另存为.addActionListener(this);

退出.addActionListener(this);

查找.addActionListener(this);

}public static void main(String[] args)

{np = new Notepad();

np.setSize(300, 300);

np.setVisible(true);

np.setDefaultCloseOperation(EXIT_ON_CLOSE);

}public void actionPerformed(ActionEvent e)

{if (e.getSource() == 新建)

{if (jtext.getText().length() > 0)

{Button b1 = new Button("是");

Button b2 = new Button("否");

Button b3 = new Button("取消");

final NewFrame jf = new NewFrame("记事本");

jf.setLayout(new GridLayout(2, 1));

JPanel jp = new JPanel();

final JTextArea jtf = new JTextArea();

jtf.setText("★ 文件 无标题 的文字已经改变。n 想改变文件吗?");

jf.add(jp);

jf.add(jtf);

jf.setLayout(new FlowLayout());

jf.add(b1);

jf.add(b2);

jf.add(b3);

b1.addActionListener(new ActionListener()

{public void actionPerformed(ActionEvent e)

{String string = jtext.getText();

JFileChooser jfc = new JFileChooser();

int result = jfc.showSeDialog(jf);

File file = null;

if (result == jfc.APPROVE_OPTION)

{file = jfc.getSelectedFile();

try

{FileWriter fos = new FileWriter(file);

BufferedWriter bw = new BufferedWriter(fos);

String[] buf = string.split("n");

for (int i = 0; i < buf.length; i++)

{bw.write(buf + "rn");

}bw.close();

jf.setVisible(false);

jf.dise();

jtext.setText("");

} catch (FileNotFoundException e1)

{e1.printStackTrace();

} catch (IOException ex)

{ex.printStackTrace();

}} else if (result == jfc.CANCEL_OPTION)

{System.out.println("give up sing");

}}

});

b2.addActionListener(new ActionListener()

{public void actionPerformed(ActionEvent e)

{jtext.setText("");

jf.setVisible(false);

jf.dise();

}});

b3.addActionListener(new ActionListener()

{public void actionPerformed(ActionEvent e)

{jf.setVisible(false);

jf.dise();

}});

jf.setSize(200, 150);

jf.setResizable(false);

}}

if (e.getSource() == 打开)

{JFileChooser jfc = new JFileChooser();

int result = jfc.showOpenDialog(this);

File file = null;

if (result == jfc.APPROVE_OPTION)

{file = jfc.getSelectedFile();

try

{FileInputStream fr = new FileInputStream(file);

BufferedInputStream bis = new BufferedInputStream(fr);

byte b[] = new byte[(int) file.length()];

System.out.println(file.length());

bis.read(b);

jtext.setText(new String(b));

bis.close();

} catch (IOException ex)

{ex.printStackTrace();

}}

}if (e.getSource() == 保存)

{String string = jtext.getText();

JFileChooser jfc = new JFileChooser();

int result = jfc.showSeDialog(this);

File file = null;

if (result == jfc.APPROVE_OPTION)

{file = jfc.getSelectedFile();

try

{FileWriter fos = new FileWriter(file);

BufferedWriter bw = new BufferedWriter(fos);

String[] buf = string.split("n");

for (int i = 0; i < buf.length; i++)

{bw.write(buf + "rn");

}bw.close();

} catch (FileNotFoundException e1)

{e1.printStackTrace();

} catch (IOException ex)

{ex.printStackTrace();

}} else if (result == jfc.CANCEL_OPTION)

{System.out.println("give up sing");

}}

if (e.getSource() == 另存为)

{String string = jtext.getText();

JFileChooser jfc = new JFileChooser();

int result = jfc.showSeDialog(this);

File file = null;

if (result == jfc.APPROVE_OPTION)

{file = jfc.getSelectedFile();

try

{FileWriter fos = new FileWriter(file);

BufferedWriter bw = new BufferedWriter(fos);

String[] buf = string.split("n");

for (int i = 0; i < buf.length; i++)

{bw.write(buf + "rn");

}bw.close();

} catch (FileNotFoundException e1)

{e1.printStackTrace();

} catch (IOException ex)

{ex.printStackTrace();

}} else if (result == jfc.CANCEL_OPTION)

{System.out.println("give up sing");

}}

if (e.getSource() == 退出)

{int retval = JOptionPane.showConfirmDialog(this, "你真的要结束吗?",

"结束程序", JOptionPane.YES_NO_OPTION);

if (retval == JOptionPane.YES_OPTION)

System.exit(0);

}if (e.getSource() == 查找)

{JFrame jf = new JFrame("查找");

final JTextField jtf;

JLabel jl;

JButton jb;

jl = new JLabel("查找的字符串:");

jtf = new JTextField(15);

jb = new JButton("查找下一个");

jf.setLayout(new FlowLayout(FlowLayout.CENTER,10,10));

jf.add(jl);

jf.add(jtf);

jf.add(jb);

jf.setSize(400,90);

jf.setLocation(200, 200);

jf.setVisible(true);

jf.setResizable(false);

jf.setAlwaysOnTop(true);

jb.addActionListener(new ActionListener()

{public void actionPerformed(ActionEvent e)

{String temp = np.getJta().getText();

if (temp.indexOf(jtf.getText(), index

+ jtf.getText().length()) == -1)

{index = temp.indexOf(jtf.getText());

} else

{index = temp.indexOf(jtf.getText(), index

+ jtf.getText().length());

}np.getJta().setSelectionStart(index);

np.getJta().setSelectionEnd(index + jtf.getText().length());

}});

}}

public JTextPane getJta()

{return jtext;

}class NewFrame extends JFrame

{NewFrame()

{super();

}NewFrame(String sti)

{super();

setSize(300, 300);

setLocationRelativeTo(this);

pack();

setVisible(true);

addWindowListener(new WindowsListener());

}}

class WindowsListener extends WindowAdapter

{public void windowClosing(WindowEvent we)

{((Window) we.getComponent()).dise();

}}

}

楼上的大牛,你的程序回答楼主的问题已经算是绰绰有余了。实现了记事本的基本功能,我只是有点建议:字符编码上能不能稍微加强一下处理功能,因为你写的东西如果是英文和数字,可以很再次打开,但是中文的字符就会出错。仅是建议。

请确保commonDialog控件已拖放到form上,具体步骤为:在vb的project菜单下,打开components子菜单,在弹出窗口中的controls标签页下,找到Microsoft

Common

Dialog

?.0(SP?)打上勾后确定,确定之后在控件选择那个栏位表会出现一个新加入的图标,鼠标移上去会出现CommonDialog字样,将它点击拖入你建立的窗体上,再尝试运行

没有在窗体添加

CommonDialog

控件

Ctrl+T,选择

microsoft

common

dialog..

再在工具箱中将其拖到窗体即可

以前做过.并不难实现,VB有个控件rich textbox,记事本的基本功能都能用它实现

求网页代码,一个简单的记事本代码。

import ja.awt.;

import ja.awt.nt.;

import ja.io.;

import jax.swing.;

public class MyNotepad implements ActionListener{

private JFrame frame=new JFrame("新记事本");

private JTextArea jta=new JTextArea();

private String result="";

private boolean flag=true;

private File f;

private JButton jb=new JButton("开始");

private JTextField jtf=new JTextField(15);

private JTextField jt=new JTextField(15);

private JButton jbt=new JButton("替换为");

private JButton jba=new JButton("全部替换");

private Icon ic=new ImageIcon("D:ja课堂笔记GUI11.gif");

private String value;

private int start=0;

private JFrame jf=new JFrame("查找");

private JFrame jfc=new JFrame("替换");

@Override

public void actionPerformed(ActionEvent e) {

String comm=e.getActionCommand();

if("新建".equals(comm)){

if(!(frame.getTitle().equals("新记事本"))){

if(!flag){

write();

newNew();

}else{

JFileChooser jfc=new JFileChooser("D:ja课堂笔记");

int returnVal = jfc.showDialog(null,"保存为");

if(returnVal == JFileChooser.APPROVE_OPTION) {//选择文件后再执行下面的语句,保证了程序的健壮性

f=jfc.getSelectedFile();

flag=false;

write();

}}

}else if(!(jta.getText().isEmpty())){

JFileChooser jfc=new JFileChooser("D:ja课堂笔记");

int returnVal = jfc.showDialog(null,"保存为");

if(returnVal == JFileChooser.APPROVE_OPTION) {//选择文件后再执行下面的语句,保证了程序的健壮性

f=jfc.getSelectedFile();

flag=false;

write();

newNew();

}}else{

newNew();

}}else if("打开".equals(comm)){

JFileChooser jfc=new JFileChooser("D:ja课堂笔记");

jfc.setDialogType(JFileChooser.OPEN_DIALOG);

int returnVal = jfc.showOpenDialog(null);

if(returnVal == JFileChooser.APPROVE_OPTION) {//选择文件后再执行下面的语句,保证了程序的健壮性

f=jfc.getSelectedFile();

frame.setTitle(f.getName());

result=read()();

flag=false;

value=result;

jta.setText(result);

}}else if("保存".equals(comm)){

JFileChooser jfc=new JFileChooser("D:ja课堂笔记");

if(flag){

int returnVal = jfc.showDialog(null,"保存为");

if(returnVal == JFileChooser.APPROVE_OPTION) {//选择文件后再执行下面的语句,保证了程序的健壮性

f=jfc.getSelectedFile();

flag=false;

write();

}}else{

write();

}}else if("另存".equals(comm)){

JFileChooser jfc=new JFileChooser("D:ja课堂笔记");

int returnVal = jfc.showDialog(null,"另存");

if(returnVal == JFileChooser.APPROVE_OPTION) {//选择文件后再执行下面的语句,保证了程序的健壮性

f=jfc.getSelectedFile();

write();

}}else if("退出".equals(comm)){

System.exit(0);

}else if("撤销".equals(comm)){

jta.setText(value);

}else if("剪切".equals(comm)){

value=jta.getText();

jta.cut();

}else if("".equals(comm)){

jta.copy();

}else if("粘贴".equals(comm)){

value=jta.getText();

jta.paste();

}else if("删除".equals(comm)){

value=jta.getText();

jta.replaceSelection(null);

}else if("全选".equals(comm)){

jta.selectAll();

}else if("查找".equals(comm)){

value=jta.getText();

jf.add(jtf,BorderLayout.CENTER);

jf.add(jb,BorderLayout.SOUTH);

jf.setLocation(300,300);

jf.pack();

jf.setVisible(true);

jf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

}else if("替换".equals(comm)){

value=jta.getText();

GridLayout gl=new GridLayout(3,3);

JLabel jl1=new JLabel("查找内容:");

JLabel jl2=new JLabel("替换为:");

jfc.setLayout(gl);

jfc.add(jl1);

jfc.add(jtf);

jfc.add(jb);

jfc.add(jl2);

jfc.add(jt);

jfc.add(jbt);

JLabel jl3=new JLabel();

JLabel jl4=new JLabel();

jfc.add(jl3);

jfc.add(jl4);

jfc.add(jba);

jfc.setLocation(300,300);

jfc.pack();

jfc.setVisible(true);

jfc.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

}else if("版本".equals(comm)){

JDialog jd=new JDialog(frame,"关于对话框");

jd.setSize(200,200);

JLabel l=new JLabel("哈哈哈哈哈哈哈哈哈哈呵呵呵呵呵呵呵呵呵呵呵呵呵");

jd.add(l,BorderLayout.CENTER);

jd.setLocation(100,200);

jd.setSize(300,300);

jd.setVisible(true);

// jd.pack();

jd.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);

}else if("开始".equals(comm)||"下一个".equals(comm)){

String temp=jtf.getText();

int s=value.indexOf(temp,start);

if(value.indexOf(temp,start)!=-1){

jta.setSelectionStart(s);

jta.setSelectionEnd(s+temp.length());

jta.setSelectedTextColor(Color.GREEN);

start=s+1;

jb.setText("下一个");

// value=value.substring(s+temp.length());//不能截取字串

}else {

JOptionPane.showMessageDialog(jf, "查找完毕!", "提示", 0, ic);

jf.dise();

}}else if("替换为".equals(comm)){

String temp=jtf.getText();

int s=value.indexOf(temp,start);

if(value.indexOf(temp,start)!=-1){

jta.setSelectionStart(s);

jta.setSelectionEnd(s+temp.length());

jta.setSelectedTextColor(Color.GREEN);

start=s+1;

jta.replaceSelection(jt.getText());

}else {

JOptionPane.showMessageDialog(jf, "查找完毕!", "提示", 0, ic);

jf.dise();

}}else if("全部替换".equals(comm)){

String temp=jta.getText();

temp=temp.replaceAll(jtf.getText(), jt.getText());

jta.setText(temp);

}}

public String read()(){

String temp="";

try {

FileInputStream fis = new FileInputStream(f.getAbsolutePath());

byte[] b=new byte[1024];

while(true){

int num=fis.read()(b);

if(num==-1)break;

temp=temp+new String(b,0,num);

}fis.close();

} catch (Exception e1) {

e1.printStackTrace();

}return temp;

}public void write(){

try {

FileOutputStream fos=new FileOutputStream(f);

fos.write(jta.getText().getBytes()());

fos.close();

} catch (Exception e) {

e.printStackTrace();

}}

public void newNew(){

frame.dise();

new MyNotepad();

flag=true;

}public MyNotepad(){

JMenuBar jmb=new JMenuBar();

String[] menuLab={"文件","编辑","帮助"};

String[][] menuItemLab={{"新建","打开","保存","另存","退出"},

{"撤销","剪切","","粘贴","删除","全选","查找","替换"},

{"版本"}};

for(int i=0;i

JMenu menu=new JMenu(menuLab[i]);

jmb.add(menu);

for(int j=0;j

JMenuItem jmi=new JMenuItem(menuItemLab[i][j]);

menu.add(jmi);

jmi.addActionListener(this);

}}

frame.setJMenuBar(jmb);

jta.setLineWrap(true);//自动换行

JScrollPane jsp=new JScrollPane(jta);//滚动窗口面板

frame.add(jsp);

jb.addActionListener(this);

jbt.addActionListener(this);

jba.addActionListener(this);

frame.setLocation(200,50);

frame.setSize(620,660);

frame.setVisible(true);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}public static void main(String[] args) {

new MyNotepad();

}}

好玩功能性强的编程代码:

如msgbox "系统检测到WINDOWS更新中捆绑有不明插件

SXS.exe,是否对其扫描?"

msgbox "文件名 SXS.exe"+CHR(13)+"发行者 田间的菜鸟 "+chr(13)+"安全评级 高危"+chr(13)+"建议 直接删除"+chr(13)+"类型:木马",,"windows扫描附件"

msgbox "是否阻止其安装?",vbyesno

wscript.sleep 3000msgbox "阻止失败!请检查防火墙是否开启!

代码就是程序员用开发工具所支持的语言写出来的源文件,是一组由字符、符号或信号码元以离散形式表示信息的明确的规则体系。代码设计的原则包括确定性、标准化和通用性、可扩充性与稳定性、便于识别与记忆、力求短小与格式统一以及容易修改等。 源代码是代码的分支,某种意义上来说,源代码相当于代码。现代程序语言中,源代码可以书籍或磁带形式出现,但为常用格式是文本文件,这种典型格式的目的是为了编译出计算机程序。

如果对编程还有什么问题的话,可以咨询童程童美,该机构是达内教育旗下少儿编程培训品牌,19年编程科技素质教育,130000+学员的选择,打造出适合3-18岁孩子的科技素质教育解决方案,为培养孩子的信息素养,全面推动科技素质教育发展。。