记事本

原创 2005年05月31日 21:41:00
// java版记事本
// 实现基本的功能
// 文件,编辑,帮助

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

public class Jishiben extends JFrame implements ActionListener{

private ObjectOutputStream output;
private ObjectInputStream input;
private String fileBody="";
boolean isCreate = false;
boolean isOpen = false;
boolean openFileSeccess = false;
boolean createFileSeccess = false;


private JMenuBar menubar;
private JMenu wenjian;
private JMenu bianji;
private JMenu bangzhu;

///////////////////////////////
private JMenuItem xinjian;
private JMenuItem dakai;
private JMenuItem baocun;
private JMenuItem tuichu;
///////////////////////////////
private JMenuItem fuzhi;
private JMenuItem zhantie;
private JMenuItem jianqie;
private JMenuItem chazhao;
private JMenuItem quanxuan;
private JMenuItem riqi;
//////////////////////////////
private JMenuItem guanyu;
private JMenuItem help;

private JTextArea area;

private JPanel mainPanel;
private JPanel areaPanel;



public Jishiben()
{
super("-记事本");

menubar = new JMenuBar();
menubar.add(wenjian = new JMenu("文件(F)"));
menubar.add(bianji = new JMenu ("编辑(E)"));
menubar.add(bangzhu = new JMenu("帮助(H)"));

wenjian.add(xinjian = new JMenuItem("新建(N)"));
wenjian.add(dakai = new JMenuItem("打开(O)"));
wenjian.add(baocun = new JMenuItem("保存(S)"));
wenjian.add(tuichu = new JMenuItem("退出(X)"));

bianji.add(fuzhi = new JMenuItem("复制"));
bianji.add(jianqie = new JMenuItem("剪切"));
bianji.add(zhantie = new JMenuItem("粘贴"));

bianji.add(chazhao = new JMenuItem("查找"));
bianji.add(quanxuan = new JMenuItem("全选"));
bianji.add(riqi = new JMenuItem("日期"));

bangzhu.add(guanyu = new JMenuItem("关于"));
bangzhu.add(help = new JMenuItem("帮助"));

wenjian.setFont(new Font("Dialog",0,12));
bianji.setFont(new Font("Dialog",0,12));
bangzhu.setFont(new Font("Dialog",0,12));
xinjian.setFont(new Font("Dialog",0,12));
dakai.setFont(new Font("Dialog",0,12));
baocun.setFont(new Font("Dialog",0,12));
tuichu.setFont(new Font("Dialog",0,12));
fuzhi.setFont(new Font("Dialog",0,12));
jianqie.setFont(new Font("Dialog",0,12));
zhantie.setFont(new Font("Dialog",0,12));
chazhao.setFont(new Font("Dialog",0,12));
quanxuan.setFont(new Font("Dialog",0,12));
riqi.setFont(new Font("Dialog",0,12));
guanyu.setFont(new Font("Dialog",0,12));
help.setFont(new Font("Dialog",0,12));

wenjian.setMnemonic(´f´);
dakai.setMnemonic(´o´);
bianji.setMnemonic(´e´);
bangzhu.setMnemonic(´h´);
xinjian.setMnemonic(´n´);
baocun.setMnemonic(´s´);
tuichu.setMnemonic(´x´);


xinjian.addActionListener(this);
dakai.addActionListener(this);
baocun.addActionListener(this);
tuichu.addActionListener(this);

fuzhi.addActionListener(this);
zhantie.addActionListener(this);
chazhao.addActionListener(this);
quanxuan.addActionListener(this);
riqi.addActionListener(this);

guanyu.addActionListener(this);
help.addActionListener(this);

area = new JTextArea();

Container container = getContentPane();
mainPanel = new JPanel();
JScrollPane areaPanel=new JScrollPane(area);
//areaPanel.setHorizontalScrollBarPolicy(2);
area.setLineWrap(true);
areaPanel.setWheelScrollingEnabled(true);

//setWrapEnable(false);//

mainPanel.setLayout(new BorderLayout());

container.add("Center",mainPanel);

mainPanel.add("North",menubar);
mainPanel.add("Center",areaPanel);

setSize(800,600);

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = getSize();
if (frameSize.height > screenSize.height) {
frameSize.height = screenSize.height;
}
if (frameSize.width > screenSize.width) {
frameSize.width = screenSize.width;
}
setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);
setVisible(true);



show();

}


public void actionPerformed( ActionEvent e)
{
if(e.getSource()==xinjian)
xinjian();

if(e.getSource()==dakai)
dakai();

if(e.getSource()==baocun)
baocun();

if(e.getSource()==tuichu)
tuichu();

if(e.getSource()==guanyu)
guanyu();

if(e.getSource()==help)
help();

if(e.getSource()==fuzhi)
area.copy();

if(e.getSource()==jianqie)
area.cut();

if(e.getSource()==zhantie)
area.paste();

}

private void xinjian()
{
////////////// create new file


createFile();
if(createFileSeccess == true)
isCreate = true;




}

/////////////////////////////////////
//打开文件 显示数据
///////////////////////////////////
private void dakai()
{
openFile();
if(openFileSeccess == true)
{
isOpen = true;

try{

fileBody = (String)input.readObject();
area.setText(fileBody);
}

catch(ClassNotFoundException cnfex)
{
JOptionPane.showMessageDialog(this,"Unable to create object","Class not Found",
JOptionPane.ERROR_MESSAGE);
}

catch(IOException io)
{
JOptionPane.showMessageDialog(this,"Error during read from file","Read Error",
JOptionPane.ERROR_MESSAGE);
}

}


}

///////////////????????????
///baocun
/////////////////////////////////////////////////////////////////////

private void baocun() //
{

//
if(isCreate==true)
{
try{
fileBody = area.getText(); //

output.writeObject(fileBody); //
output.flush();

isCreate=false;
isOpen = false; //

}

catch(IOException io) //
{
closeFile(); //
//
}

}

if(isOpen==true)
{
createFile();
if(createFileSeccess==true)
{
try{
fileBody = area.getText(); //

output.writeObject(fileBody); //
output.flush();


//

}

catch(IOException io) //
{
closeFile(); //
//
}

}

}


if(isCreate!=true&&isOpen!=true)
{ //

createFile();
if(createFileSeccess==true)
{
isCreate = true; //
try{
fileBody = area.getText();

output.writeObject(fileBody); //
output.flush();

}
//
catch(IOException io)
{
closeFile();
}
//




}//end if
//
}



}
//end baocun ///////////////////////////////////////////////////////


private void tuichu()
{
System.exit(0);


}



private void closeFile()
{
try{
output.close();
System.exit(0);
}
catch(IOException ex){
JOptionPane.showMessageDialog(this,
"Error closing file",
"Error",JOptionPane.ERROR_MESSAGE);
System.exit(1);
}

}

/////////////////
//open a file
private void openFile()
{
JFileChooser fileChooser = new JFileChooser();

fileChooser.setFileSelectionMode(
JFileChooser.FILES_ONLY );
int result = fileChooser.showOpenDialog( this );


if ( result == JFileChooser.CANCEL_OPTION )
return;

File fileName = fileChooser.getSelectedFile();

if ( fileName == null ||
fileName.getName().equals( "" ) )
JOptionPane.showMessageDialog( this,
"Invalid File Name",
"Invalid File Name",
JOptionPane.ERROR_MESSAGE );
else {
// Open the file
try {
input = new ObjectInputStream(
new FileInputStream( fileName ) );
openFileSeccess = true;////
dakai.setEnabled( true );

}
catch ( IOException e ) {
JOptionPane.showMessageDialog( this,
"Error Opening File", "Error",
JOptionPane.ERROR_MESSAGE );
}
}

}

////////
//create a file
private void createFile()
{
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileSelectionMode(
JFileChooser.FILES_ONLY );

int result = fileChooser.showSaveDialog( this );

// clicked Cancel button on dialog
if ( result == JFileChooser.CANCEL_OPTION )
return;

File fileName = fileChooser.getSelectedFile();

if ( fileName == null ||
fileName.getName().equals( "" ) )
JOptionPane.showMessageDialog( this,
"Invalid File Name",
"Invalid File Name",
JOptionPane.ERROR_MESSAGE );
else {
// Open the file
try {
output = new ObjectOutputStream(
new FileOutputStream( fileName ) );
createFileSeccess = true;
xinjian.setEnabled( true );

}
catch ( IOException e ) {
JOptionPane.showMessageDialog( this,
"Error Opening File", "Error",
JOptionPane.ERROR_MESSAGE );
}
}

}

////////////////
//帮助
///////////////
private void guanyu()
{
JOptionPane.showMessageDialog(this," java版记事本 "+ "/n" +
" By yellow ","关于记事本",2);
}

private void help()
{
JOptionPane.showMessageDialog(this,"复制(Ctrl+c),粘贴(Ctrl+v), 剪切(Ctrl+x) ",
"help",2);
}
/////////////////////////////////////

public static void main(String args[])
{
Jishiben app = new Jishiben();

app.addWindowListener(
new WindowAdapter(){
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}

);
}

}

我的记事本之-SQLite数据库的使用

sqlite的使用小练习
  • Dseai_
  • Dseai_
  • 2016年11月27日 11:48
  • 681

Android 记事本-Demo

实现功能1:文本数据的存储 2:图片数据存储 3:视频数据存储 4:自定义的Adapter 5:SQlite的创建 6:数据listview列表的显示 界面布局...
  • qq_31060955
  • qq_31060955
  • 2016年05月03日 14:18
  • 3753

iOS 记事本源码,有需要的可以下载

iOS记事本源码,第一次提交到gitHub,有需要可以下载,(大神勿喷)记得给一颗star,谢谢 https://github.com/baishiyun/BSYFancybox...
  • mjbaishiyun
  • mjbaishiyun
  • 2015年04月28日 08:46
  • 1583

android 记事本demo!!!(listview与SQLite综合)

android记事本的demo在网上一搜一大堆,但是大神写的demo往往功能太多导致新手难以着手,很难啃得动;而一些新手写的demo又往往是东拼西凑,代码很多都是copy的别人的,直接放在项目里面用,...
  • Double2hao
  • Double2hao
  • 2015年12月13日 19:14
  • 6441

Java开发记事本(完整版)

Java开发记事本(完整版)
  • zenglinshan
  • zenglinshan
  • 2016年05月01日 04:34
  • 9826

MFC 实现记事本功能

记事本的基本功能已经都实现:采用的是CEdit类实现,包括打开文件,保存文件,粘贴,复制剪切等等:   1: //实现菜单栏目下 复制的功能 void CNotePadDlg::OnEditC...
  • djb100316878
  • djb100316878
  • 2014年12月29日 16:29
  • 7030

Java小程序之我的记事本

Java小程序之我的记事本 前言:Java中的流的知识非常重要,刚开始学,一定要多花时间对流的分类以及继承的知识学明白,只有这样,对流的应用才会了然于胸; 好了,言归正传,今天给大家写一个利用...
  • BlueSky_USC
  • BlueSky_USC
  • 2016年11月27日 00:25
  • 1402

用C++写的一个记事本

#include #include #include // for _tcsstr (strstr for Unicode & non-Unicode) static T...
  • KarlDoenitz
  • KarlDoenitz
  • 2012年08月23日 19:07
  • 4484

今天无意中又发现一个记事本的 bug

打开记事本,输入a b c d e f (以上连空格一共12 个字符。每个字母后面一个空格,注意不要加任何换行符)保存为任意 txt 文件。关闭,重新打开看看?这个好像和传说中的 “联通” 的 b...
  • inelm
  • inelm
  • 2005年04月13日 13:22
  • 180

QT学习二:一个简单的记事本

这个工作过程和上面文章类似,只是代码有所不同。我也在学习怎么使用QT,所以欢迎交流。还有,最近在找工作,如果有哪位公司不嫌弃我技术差,经验少的话。可以联系我,我会很乐意地干活哈。个人邮箱:lsc199...
  • u013220338
  • u013220338
  • 2015年07月27日 16:50
  • 1338
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:记事本
举报原因:
原因补充:

(最多只允许输入30个字)