java编写简单记事本

Python025

java编写简单记事本,第1张

方法/步骤

下载JDK,并安装成功,CMD测试Java环境安装成功。出现如下提示则Java环境安装成功

打开mycelipse进入主界面,点击左上角file--new---java project,新建一个Java项目,项目名字任意取,这里我取名为note--然后点击完成,创建Java项目

然后右键项目下的src--new---package,新建一个包,包名我定为notetest,然后点击完成

然后右键我们建立好的包notetest--new--class,包名为Note,点击完成

首先我们想导入工程所需要的包,以便编写程序时进行调用

package notepad

import java.awt.*

import java.awt.event.ActionEvent

import java.awt.event.ActionListener

import java.awt.event.WindowAdapter

import java.awt.event.WindowEvent

import java.io.BufferedReader

import java.io.BufferedWriter

首先定义好编写程序时变量,我们设为成员变量方便以后调用

public class Notepad{

//屏幕分辨率

int width = Toolkit.getDefaultToolkit().getScreenSize().width

int height = Toolkit.getDefaultToolkit().getScreenSize().height

//窗体

private Frame frm

//显示内容多行文本

private TextArea notetext

//记事本菜单

private MenuBar mb

//菜单

private Menu m

//菜单项

private MenuItem open,save

为程序创建组件--Frame--菜单栏目--文本框TextArea

public Notepad(){init()}

private void init(){

frm = new Frame("模拟记事本")

//设置菜单

mb = new MenuBar()

m = new Menu("文件")

//显示文件的地方

notetext = new TextArea()

notetext.setBounds(30, 50, 750, 500)

frm.add(notetext)

myEvent()

为控件和按钮添加监听事件

private void myEvent() {

//打开菜单的事件处理

open.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

//判断路径和文件名是否为空 如果为空结束程序

if(dir == null || name == null)

//如果不为空讲路径名和文件名封装到File对象里

file = new File(dir,name)

//使用字符缓冲读取文件

BufferedReader bfr = null

try {

bfr = new BufferedReader(new FileReader(file))

})

save.addActionListener(new ActionListener(){

//获取路径和文件名

String dir =fd.getDirectory()

String name = fd.getFile()

//如果不为空讲路径名和文件名封装到File对象里

file = new File(dir,name)

}

BufferedWriter bfr= null

}

})

}

}

然后创建主方法,开始测试程序,新建一个NoteDemo类

package notepad

public class NoteDemo {

public static void main(String[] args) {

new Notepad()

}

}

a.awt.event.*

import javax.swing.JOptionPane

/**

*功能:简单记事本

*2011-12-25

*/

public class SimpleNotepad implements ActionListener{

private Frame frame

private FileDialog fd_load

private FileDialog fd_save

private TextArea ta

private String file = ""

private MenuItem save

private RandomAccessFile raf

private FileChannel fci

private FileLock flock

import java.awt.event.*

import java.awt.*

import java.io.*

import java.util.Calendar

import java.util.Date

import javax.swing.*

class Editor extends Frame implements ActionListener,ItemListener

{

// Date date=new Date()

int n1String str=""int k=0String st1,st2

JTextArea ta=new JTextArea(50,50)

Dialog dialog,dialog1

Choice ce1,ce2,ce3

Button btn1,btn2,btn3Panel p1=new Panel()

Panel p2=new Panel()Panel p3=new Panel()Panel p4=new Panel()

public Editor (String s)

{

super ("记事本编辑板")

ImageIconYouImg=newImageIcon("iconimage.jpg")

setIconImage(YouImg.getImage())

addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent e){

dispose()

System.exit(0)

}

})

setBounds(50,35,700,500)

MenuBar mb=new MenuBar()

setMenuBar(mb)

Menu file=new Menu("文件(F)")Menu edit=new Menu("编辑(E)")Menu help=new Menu("帮助(H)")

Menu pattern=new Menu("格式(P)")Menu time=new Menu("时间(T)")

MenuItem exit=new MenuItem("退出",new MenuShortcut(KeyEvent.VK_Q))

MenuItem tdate=new MenuItem("日期/时间",new MenuShortcut(KeyEvent.VK_D))

MenuItem renew=new MenuItem("新建", new MenuShortcut(KeyEvent.VK_N))

MenuItem save=new MenuItem("保存", new MenuShortcut(KeyEvent.VK_S))

MenuItem open=new MenuItem("打开",new MenuShortcut(KeyEvent.VK_O))

MenuItem copy=new MenuItem("复制",new MenuShortcut(KeyEvent.VK_C))

MenuItem paste=new MenuItem("粘贴",new MenuShortcut(KeyEvent.VK_V))

MenuItem cut=new MenuItem("剪切",new MenuShortcut(KeyEvent.VK_X))

MenuItem helptopic=new MenuItem("主题",new MenuShortcut(KeyEvent.VK_T))

helptopic.addActionListener(this)

dialog=new Dialog(this, "字体设置")dialog.setSize(300,300)

dialog1=new Dialog(this, "帮助主题")dialog1.setBounds(250,100,300,400)

dialog.addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent e){

dialog.setVisible(false)}

})

dialog1.addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent e){

dialog1.setVisible(false)}

})

//dialog.setBackground(Color.WHITE)

dialog.setLayout(null)dialog.setBounds(170,150,450,300)

Label L1=new Label("字体(F)")Label L2=new Label("字形(Y)")

Label L3=new Label("大小(S)")TextArea ta1=new TextArea(5,5)

ta1=new TextArea("至于记事本的主题嘛,因为本人的水平有限, 所有不能为大家作过多的指导,望大家见谅!")//在这里我想加一个文本框用来放帮助信息。

ce1=new Choice()ce2=new Choice()

ce3=new Choice()

btn1=new Button("确定")btn2=new Button("取消")btn1.addActionListener(this)btn2.addActionListener(this)

btn3=new Button("颜色")

btn3.addActionListener(this)

ce1.add("华文行楷")ce1.add("华文中宋")ce1.add("华文新魏")ce1.add("华文细黑")ce1.add("宋体")ce1.add("方正姚体")

ce1.add("幼圆")ce1.add("隶书")ce1.add("楷体-GB2312")ce1.add("华文行楷")ce1.add("华文彩云")ce1.add("仿宋-GB2312")

ce2.add("粗体")ce2.add("斜体")ce2.add("常规")

for(int n1=0n1<=100n1++)

{ce3.add(""+n1)}

dialog.add(p1)p1.setBounds(5,30,440,35)p1.setLayout( null)//p1.setBackground(Color.red)

dialog.add(p2)p2.setBounds(5,65,440,27)dialog.add(p3)p3.setBounds(5,90,440,40)//p4.setBounds(5,120,440,138)

p1.setLayout( null)

p1.add(L1)L1.setBounds(5,15,50,25)p1.add(L2)L2.setBounds(150,15,50,25)

p1.add(L3)L3.setBounds(250,15,50,25)p2.setLayout( null)//p2.setBackground(Color.yellow)

p2.add(ce1)ce1.setBounds(5,0,130,25)p2.add(ce2)ce2.setBounds(160,0,90,25)p2.add(ce3)ce3.setBounds(260,0,75,25)

p2.add(btn1)btn1.setBounds(360,0,75,25)

p3.setLayout( null)p3.add(btn2)btn2.setBounds(360,10,75,25)p3.add(btn3)btn3.setBounds(160,10,75,25)

dialog.add(p4)p4.setBackground(Color.yellow)p4.setBounds(5,120,440,138)

dialog1.add(ta1)

//设置字体的下拉情况

MenuItem Font=new MenuItem("字体")//给字体加监听器

Font.addActionListener(this)

MenuItem Replace=new MenuItem("替换")MenuItem Seek=new MenuItem("查找")

//首要添加组件的情况

mb.add(file)mb.add(edit)mb.add(pattern)mb.add(time)mb.add(help)

file.add(renew)file.addSeparator()file.add(open)time.add(tdate)

file.addSeparator()file.add(exit)file.addSeparator()file.add(save)

edit.add(copy)edit.addSeparator()edit.add(paste)edit.addSeparator()edit.add(cut)

pattern.add(Font) pattern.add(Replace)

pattern.add(Seek)help.add(helptopic)

//给必要的组件加上监听器

renew.addActionListener( this)tdate.addActionListener(this)

open.addActionListener(this)save.addActionListener(this)exit.addActionListener(this)

cut.addActionListener(this)copy.addActionListener(this)paste.addActionListener(this)

ce1.addItemListener(this)ce2.addItemListener(this)ce3.addItemListener(this)

//添加必要的组件

add(ta,"Center")ta.setBackground(new Color(249,255,234))

setSize(700,500)

setVisible(true)

this.validate()

}

public void itemStateChanged(ItemEvent e) {

if (ce2.getSelectedItem().equals("粗体"))

{ k=1st1=ce1.getSelectedItem()st2=ce3.getSelectedItem()}

if (ce2.getSelectedItem().equals("斜体"))

{ k=2st1=ce1.getSelectedItem()st2=ce3.getSelectedItem()}

if (ce2.getSelectedItem().equals("常规"))

{ k=3st1=ce1.getSelectedItem()st2=ce3.getSelectedItem()}

}

public void actionPerformed(ActionEvent e)

{

if(e.getActionCommand().equals("新建"))

{System.out.println("new ")

ta.setText("")}

if(e.getActionCommand().equals("退出"))

{ System.exit(0)}

try

{

if(e.getActionCommand().equals("打开"))

openText()

if(e.getActionCommand().equals("保存"))

saveText()

}catch(IOException e1){}

if(e.getActionCommand().equals("复制"))

{ str=ta.getSelectedText()}

if(e.getActionCommand().equals("粘贴"))

{ ta.insert(str,ta.getCaretPosition())}

if(e.getActionCommand().equals("剪切"))

{str=ta.getSelectedText()ta.replaceRange("",ta.getSelectionStart(),ta.getSelectionEnd())

}

if(e.getActionCommand().equals("字体"))

{dialog.setVisible(true)}

if(e.getActionCommand().equals("主题"))

{dialog1.setVisible(true)}

if(e.getActionCommand().equals("颜色"))

{

Color clr=JColorChooser.showDialog(this,"颜色对话框",null)

ta.setForeground(clr)

}

if(e.getSource()==btn2)

dialog.setVisible(false)

if(e.getSource()==btn1)

{

if(k==1)

{ ta.setFont(new Font(st1,Font.BOLD,Integer.parseInt(st2)))}

if(k==2)

{ ta.setFont(new Font(st1,Font.ITALIC,Integer.parseInt(st2)))}

if(k==3)

{ ta.setFont(new Font(st1,Font.PLAIN,Integer.parseInt(st2)))}

dialog.setVisible(false)

}

//if (e.getActionCommand().equals("日期/时间"))

//ta.setText(ta.getText()+""+date)

if(e.getActionCommand().equals("日期/时间"))

{

Calendar c1 =Calendar.getInstance()

int y = c1.get(Calendar.YEAR)

int m = c1.get(Calendar.MONTH)

int d = c1.get(Calendar.DATE)

int h = c1.get(Calendar.HOUR)

int m1 = c1.get(Calendar.MINUTE)

int m2 = m+1

ta.setText(ta.getText()+""+(y+"年"+m2+"月"+d+"日"+h+":"+m1))

}

}

public void openText() throws IOException

{

FileDialog fd=new FileDialog(this,"打开文件对话框",FileDialog.LOAD)

fd.setVisible(true)FileInputStream fis=new FileInputStream(fd.getDirectory()+fd.getFile())

ta.setText("")

int n=0

while((n=fis.read())!=-1)

ta.append(""+(char)n)

fis.close()

}

public void saveText() throws IOException

{

FileDialog fd=new FileDialog(this,"打开文件对话框",FileDialog.SAVE)

fd.setVisible(true)

FileOutputStream out=new FileOutputStream(fd.getDirectory()+fd.getFile()+".txt")

String str=ta.getText()

String str1=ta.getText()

for(int n=0n<str.length()n++)

out.write((byte)str.charAt(n))

out.close()

}

public static void main(String[] args)

{

Editor f=new Editor(" 记事本程序")

//添加时间代码

Date date=new Date()

System.out.print(date)

/*Calendar now=Calendar.getInstance()

int year=now.get(Calendar.YEAR)

int month=now.get(Calendar.MONTH)+1

int day=now.get(Calendar.DATE)

System.out.print(year+"年"+month+"月"+day+"日")

int week=now.get(Calendar.DAY_OF_WEEK)

String str="日一二三四五六"//星期1-7

int i=2*(week-1)

System.out.println("星期"+str.substring(i,i+2))//对应中文的下标*/

}

class dialog extends Dialog

{

public dialog()

{

super(dialog, "字体设置")

class Mycanvas extends Canvas

{

Toolkit tk

Image img

Mycanvas()

{

setSize(440,138)

tk=getToolkit()

img=tk.getImage("photo.jpg")

}

public void paint(Graphics g)

{

g.drawImage(img,5,120,440,138,this)

}

}

}

}

}