Java记事本.docx
- 文档编号:7306522
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:17
- 大小:468.29KB
Java记事本.docx
《Java记事本.docx》由会员分享,可在线阅读,更多相关《Java记事本.docx(17页珍藏版)》请在冰豆网上搜索。
Java记事本
功能:
实现了记事本的基本功能,动态界面,文件流,打开文件,修改文件,保存文件,另存为,自定义文件名和格式。
本来想实现与数据库连接,但是要实现跨面板调用,不是一件简单的事,所以搁浅了,另外,关于字体的优化类就交给有兴趣的同学们了。
在Eclipse中的结构图如下:
图1
部分运行效果图:
图2
图3
以上图1的类中,有一些是不必要的,是我在制作过程中的测试类,所以在这里只把必要的类附上,运行绝对没有问题:
com.yangcong.extra包:
1.OperateJPanel.java
packagecom.yangcong.extra;
importjava.awt.*;
importjava.awt.event.*;
importjava.io.*;
importjava.sql.Connection;
importjava.sql.ResultSet;
importjava.sql.Statement;
importjavax.swing.*;
importcom.yangcong.tools.*;
publicclassOperateJPanelextendsJPanelimplementsActionListener,KeyListener
{
publicBooleanflag=false;//用以判断是否显示第三个面板
StringdiaryName;
StringdiaryDirectory;
intriJiNum;
BackToolbackTool;
ColormyColor;
JTextAreamyPad;
JScrollPanejScrollPane;
JToolBargongJuTiao;
JButtongongJu1,gongJu2,gongJu3,gongJu4;
/*JMenuBarcaiDanTiao;
JMenucaiDan1;
JMenuItemcaiDanXianga;*/
BorderLayoutborderLayout;
JFileChooserjFileChooser;
FileduFile=null,xieFile=null;
InputStreamReaderdu=null;
OutputStreamWriterxie=null;
publicOperateJPanel()
{
//手型光标
CursormyCursor=newCursorMouse().CursorMouse();
borderLayout=newBorderLayout();
this.setLayout(borderLayout);
/*
caiDanTiao=newJMenuBar();//菜单条
caiDan1=newJMenu("文件");
caiDanXianga=newJMenuItem("打开",newImageIcon("images/open.png"));
caiDan1.add(caiDanXianga);
caiDanTiao.add(caiDan1);
//this.add(caiDanTiao);
*/
gongJuTiao=newJToolBar();//工具条
gongJu1=newJButton("打开",newImageIcon("images/open.png"));
gongJu1.setCursor(myCursor);
gongJu1.addActionListener(this);
gongJu2=newJButton("保存",newImageIcon("images/save.png"));
gongJu2.setCursor(myCursor);
gongJu2.addActionListener(this);
gongJu3=newJButton("返回",newImageIcon("images/return.png"));
gongJu3.setCursor(myCursor);
gongJu3.addActionListener(this);
/*
*gongJu4=newJButton("列表",newImageIcon("images/list.png"));
gongJu4.setCursor(myCursor);
gongJu4.addActionListener(this);
*/
gongJuTiao.add(gongJu1);
gongJuTiao.add(gongJu2);
gongJuTiao.add(gongJu3);
//gongJuTiao.add(gongJu4);
this.add(gongJuTiao,borderLayout.NORTH);
myPad=newJTextArea(24,60);//25,60
myPad.setLineWrap(true);//设置自动换行
myPad.addKeyListener(this);//当文字发生改变的时候,保存按钮又可以使用了
jScrollPane=newJScrollPane(myPad);//用滚动条将文本区域圈起来
this.add(jScrollPane,borderLayout.SOUTH);
myColor=newColor(244,214,164);//设置背景颜色
this.setBackground(myColor);
}
publicvoidactionPerformed(ActionEvente)
{
//TODOAuto-generatedmethodstub
if(e.getSource()==gongJu1)
{
myPad.setText(null);
jFileChooser=newJFileChooser();
//jFileChooser.setDialogType(JFileChooser.OPEN_DIALOG);
//jFileChooser.showDialog(null,"打开文件");
jFileChooser.showOpenDialog(null);
try
{
if(jFileChooser.getSelectedFile()!
=null)
{
duFile=jFileChooser.getSelectedFile();
du=newInputStreamReader(newFileInputStream(duFile),"UTF-8");//解决乱码
//FileReaderdu=newFileReader(duFile);//建立通道
/*
RandomAccessFiledu=newRandomAccessFile(duFile,"rw");
longfilePoint=0;
longfileLength=du.length();
while(filePoint { Stringstring=du.readLine(); myPad.append(string+"\r\n"); filePoint=du.getFilePointer(); } du.close(); */ BufferedReaderduHuan=newBufferedReader(du);//为通道套上一根管子 /* FileduFile=jFileChooser.getCurrentDirectory();//得到文件路径 StringfileName=jFileChooser.getName(); FileReaderdu=newFileReader(duFile+"\\"+fileName);//建立通道 BufferedReaderduHuan=newBufferedReader(du);//为通道套上一根管子 */ Stringstring=null;//读一行 while((string=duHuan.readLine())! =null) { myPad.append(string+"\r\n"); } } }catch(Exceptione2) { //TODOAuto-generatedcatchblock e2.printStackTrace(); } } if(e.getSource()==gongJu2) { if(duFile! =null) { //已经打开了文件,所以是保存 try { xie=newOutputStreamWriter(newFileOutputStream(duFile),"UTF-8"); //StringxieString; xie.write(myPad.getText()); //System.out.println(myPad.getText()); xie.close(); }catch(Exceptione4) { //TODO: handleexception e4.printStackTrace(); } gongJu2.setEnabled(false);//保存之后按钮变灰色 } else { //没有打开文件,所以是另存为 jFileChooser=newJFileChooser(); JTextFieldtext; text=getTextField(jFileChooser); //text.setText("你想默认的文件名");//设定默认文件名 //jFileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);//只能打开目录 jFileChooser.showSaveDialog(null); //弹出保存对话框 //System.out.println(text.getText()); try { if(text.getText().equals("")); else { //新建一个文件,并且可以自定义文件名字和存放路径 xieFile=newFile(jFileChooser.getCurrentDirectory(),text.getText()); xie=newOutputStreamWriter(newFileOutputStream(xieFile),"UTF-8"); //StringxieString; xie.write(myPad.getText()); //System.out.println(jFileChooser.getName()); //将日记名和日记路径插入数据库 /* diaryName=text.getText(); diaryDirectory=jFileChooser.getCurrentDirectory().toString(); Connectionct=newConnectDatabase().getConn(); Statementsm=ct.createStatement(); ResultSetrs=sm.executeQuery("selectcount(*)fromdiarylist"); if(null! =rs) { while(rs.next()) { riJiNum=rs.getInt (1); }//要有这个while语句,否则会出现异常 }//得到总记录数 riJiNum++; sm.executeUpdate("insertintodiarylistvalues('"+riJiNum+"','"+diaryName+"','"+diaryDirectory+"')"); * **/ xie.close(); } }catch(Exceptione3) { //TODOAuto-generatedcatchblock e3.printStackTrace(); } } } if(e.getSource()==gongJu3) { this.setVisible(false); } /* *if(e.getSource()==gongJu4) { this.setVisible(false); flag=true;//表示要跳向列表面板,从首页面调用即实现跳转。 } */ } @Override publicvoidkeyTyped(KeyEvente){ //TODOAuto-generatedmethodstub //gongJu2.setEnabled(true); } @Override publicvoidkeyPressed(KeyEvente) { //TODOAuto-generatedmethodstub //System.out.println("触发了按下"); gongJu2.setEnabled(true); } @Override publicvoidkeyReleased(KeyEvente){ //TODOAuto-generatedmethodstub //gongJu2.setEnabled(true); } //这个方法设定默认的文件名,至今我都还不太明白。 嗯,今天好像又有点明白了。 publicJTextFieldgetTextField(Containerc) { JTextFieldtextField=null; for(inti=0;i { Componentcnt=c.getComponent(i); if(cntinstanceofJTextField) { return(JTextField)cnt; } if(cntinstanceofContainer) { textField=getTextField((Container)cnt); if(textField! =null) { returntextField; } } } returntextField; } //得到文件名和后缀名 publicStringgetDiaryName(JTextAreajta) { this.diaryName=jta.getText(); returndiaryName; } //得到文件的路径 publicStringgetDiaryDirectory(JFileChooserjfc) { this.diaryDirectory=jfc.getCurrentDirectory().toString(); //将路径从文件类型转换为String类型 returndiaryDirectory; } } 2.ShengMing.java: packagecom.yangcong.extra; importjava.awt.Color; importjava.awt.event.ActionEvent; importjava.awt.event.ActionListener; importjavax.swing.JButton; importjavax.swing.JLabel; importjavax.swing.JPanel; importjavax.swing.border.Border; publicclassShengMingextendsJPanelimplementsActionListener { JLabeljLabel; JButtonfanHui; publicShengMing() { this.setLayout(null); jLabel=newJLabel("作者: 洋葱"); jLabel.setForeground(Color.cyan); jLabel.setBounds(300,0,600,300); fanHui=newJButton("返回首页"); fanHui.addActionListener(this); fanHui.setBounds(700,430,90,30); this.add(jLabel); this.add(fanHui); this.setVisible(true); } @Override publicvoidactionPerformed(ActionEvente) { //TODOAuto-generatedmethodstub if(e.getSource()==fanHui) { this.setVisible(false); } } } com.yangcong.main包: 1.MyPad.java packagecom.yangcong.main; importjava.awt.*; importcom.yangcong.tools.*; importcom.yangcong.extra.*; importjava.awt.event.*; importjavax.swing.*; importjavax.tools.Tool; publicclassMyPad { publicstaticvoidmain(Stringargs[]) { MainViewmainView=newMainView(); } } classMainViewextendsJFrameimplementsActionListener { BackToolbackTool; OperateJPaneloperateJPanel; DiaryListdiaryList; ShengMingshengMing; JPanelzhuJPanel; CardLayoutcardLayout; intwidth,height; JButtonxinJianButton,chaKanButton,shengMingButton; ImageIconimg1,img2,img3; publicMainView() { zhuJPanel=newJPanel(); //diaryList=newDiaryList();//这是日记列表类,记录下日志。 operateJPanel=newOperateJPanel();//另起一个类,作为操作记事本的类 shengMing=newShengMing();//声明类,声明软件相关的版权等。 //设置这个容器为CardLayout布局,第一面是首页,第二面是操作页面。 cardLayout=newCardLayout(); zhuJPanel.setLayout(cardLayout); //手型光标 CursormyCursor=newCursorMouse().CursorMouse(); width=Toolkit.getDefaultToolkit().getScreenSize().width; height=Toolkit.getDefaultToolkit().getScreenSize().height; backTool=newBackTool(Toolkit.getDefaultToolkit().getImage("images/diary.gif")); backTool.setLayout(null); this.setSize(800,500); this.setLocation((width-800)/2,(height-500)/2); img1=newImageIcon("images/1.png");//图片作为按钮 xinJianButton=newJButton(img1); backTool.add(xinJianButton); xinJianButton.setBounds(200,235,90,30); xinJianButton.setCursor(myCursor);//应用手型光标 xinJianButton.addActionListener(this);//监听按钮 /*img2=newImageIcon("images/2.png"); chaKanButton=newJButton(img2); backTool.add(chaKanButton); chaKanButton.setBounds(200,280,90,30); chaKanButton.setCursor(myCursor); chaKanButton.addA
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 记事本
![提示](https://static.bdocx.com/images/bang_tan.gif)