java制作记事本.docx
《java制作记事本.docx》由会员分享,可在线阅读,更多相关《java制作记事本.docx(17页珍藏版)》请在冰豆网上搜索。
java制作记事本
记事本制作过程
24090123杨婉清
1.新建一个文本文档,更改文本文档的后缀名为 .java,进行编辑。
2.在JBuilder9中,输入相应代码
importjava.awt.BorderLayout;
importjava.awt.Container;
importjava.awt.Font;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.awt.event.InputEvent;
importjava.awt.event.KeyAdapter;
importjava.awt.event.KeyEvent;
importjava.awt.event.MouseAdapter;
importjava.awt.event.MouseEvent;
importjava.awt.event.WindowAdapter;
importjava.awt.event.WindowEvent;
importjava.io.BufferedReader;
importjava.io.BufferedWriter;
importjava.io.File;
importjava.io.FileReader;
importjava.io.FileWriter;
importjava.io.IOException;
importjavax.swing.BorderFactory;
importjavax.swing.JFileChooser;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JMenu;
importjavax.swing.JMenuBar;
importjavax.swing.JMenuItem;
importjavax.swing.JOptionPane;
importjavax.swing.JPopupMenu;
importjavax.swing.JScrollPane;
importjavax.swing.JTextArea;
importjavax.swing.KeyStroke;
importjavax.swing.ScrollPaneConstants;
importjavax.swing.SwingConstants;
publicclassJNotePadUIextendsJFrame{
privateJMenuItemmenuOpen;
privateJMenuItemmenuSave;
privateJMenuItemmenuSaveAs;
privateJMenuItemmenuClose;
privateJMenueditMenu;
privateJMenuItemmenuCut;
privateJMenuItemmenuCopy;
privateJMenuItemmenuPaste;
privateJMenuItemmenuAbout;
privateJTextAreatextArea;
privateJLabelstateBar;
privateJFileChooserfileChooser;
privateJPopupMenupopUpMenu;
publicJNotePadUI(){
super("新建文本文件");
setUpUIComponent();
setUpEventListener();
setVisible(true);
}
privatevoidsetUpUIComponent(){
setSize(640,480);
//菜单栏
JMenuBarmenuBar=newJMenuBar();
//设置「文件」菜单
JMenufileMenu=newJMenu("文件");
menuOpen=newJMenuItem("打开");
//快捷键设置
menuOpen.setAccelerator(
KeyStroke.getKeyStroke(
KeyEvent.VK_O,
InputEvent.CTRL_MASK));
menuSave=newJMenuItem("保存");
menuSave.setAccelerator(
KeyStroke.getKeyStroke(
KeyEvent.VK_S,
InputEvent.CTRL_MASK));
menuSaveAs=newJMenuItem("另存为");
menuClose=newJMenuItem("关闭");
menuClose.setAccelerator(
KeyStroke.getKeyStroke(
KeyEvent.VK_Q,
InputEvent.CTRL_MASK));
fileMenu.add(menuOpen);
fileMenu.addSeparator();//分隔线
fileMenu.add(menuSave);
fileMenu.add(menuSaveAs);
fileMenu.addSeparator();//分隔线
fileMenu.add(menuClose);
//设置「编辑」菜单
JMenueditMenu=newJMenu("编辑");
menuCut=newJMenuItem("剪切");
menuCut.setAccelerator(
KeyStroke.getKeyStroke(KeyEvent.VK_X,
InputEvent.CTRL_MASK));
menuCopy=newJMenuItem("复制");
menuCopy.setAccelerator(
KeyStroke.getKeyStroke(KeyEvent.VK_C,
InputEvent.CTRL_MASK));
menuPaste=newJMenuItem("粘贴");
menuPaste.setAccelerator(
KeyStroke.getKeyStroke(KeyEvent.VK_V,
InputEvent.CTRL_MASK));
editMenu.add(menuCut);
editMenu.add(menuCopy);
editMenu.add(menuPaste);
//设置「关于」菜单
JMenuaboutMenu=newJMenu("关于");
menuAbout=newJMenuItem("关于JNotePad");
aboutMenu.add(menuAbout);
menuBar.add(fileMenu);
menuBar.add(editMenu);
menuBar.add(aboutMenu);
setJMenuBar(menuBar);
//文字编辑区域
textArea=newJTextArea();
textArea.setFont(newFont("宋体",Font.PLAIN,16));
textArea.setLineWrap(true);
JScrollPanepanel=newJScrollPane(textArea,
ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
ContainercontentPane=getContentPane();
contentPane.add(panel,BorderLayout.CENTER);
//状态栏
stateBar=newJLabel("未修改");
stateBar.setHorizontalAlignment(SwingConstants.LEFT);
stateBar.setBorder(
BorderFactory.createEtchedBorder());
contentPane.add(stateBar,BorderLayout.SOUTH);
popUpMenu=editMenu.getPopupMenu();
fileChooser=newJFileChooser();
}
privatevoidsetUpEventListener(){
//按下窗口关闭钮事件处理
addWindowListener(
newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
closeFile();
}
}
);
//菜单-打开
menuOpen.addActionListener(
newActionListener(){
publicvoidactionPerformed(ActionEvente){
openFile();
}
}
);
//菜单-保存
menuSave.addActionListener(
newActionListener(){
publicvoidactionPerformed(ActionEvente){
saveFile();
}
}
);
//菜单-另存为
menuSaveAs.addActionListener(
newActionListener(){
publicvoidactionPerformed(ActionEvente){
saveFileAs();
}
}
);
//菜单-关闭文件
menuClose.addActionListener(
newActionListener(){
publicvoidactionPerformed(ActionEvente){
closeFile();
}
}
);
//菜单-剪切
menuCut.addActionListener(
newActionListener(){
publicvoidactionPerformed(ActionEvente){
cut();
}
}
);
//菜单-复制
menuCopy.addActionListener(
newActionListener(){
publicvoidactionPerformed(ActionEvente){
copy();
}
}
);
//菜单-粘贴
menuPaste.addActionListener(
newActionListener(){
publicvoidactionPerformed(ActionEvente){
paste();
}
}
);
//菜单-关于
menuAbout.addActionListener(
newActionListener(){
publicvoidactionPerformed(ActionEvente){
//显示对话框
JOptionPane.showOptionDialog(null,
"程序名称:
\nJNotePad\n"+
"程序设计:
\n\n"+
"简介:
\n一个简单的文字编辑器\n"+
"可作为验收Java的实现对象\n"+
"欢迎网友下载研究交流\n\n"+
"/",
"关于JNotePad",
JOptionPane.DEFAULT_OPTION,
JOptionPane.INFORMATION_MESSAGE,
null,null,null);
}
}
);
//编辑区键盘事件
textArea.addKeyListener(
newKeyAdapter(){
publicvoidkeyTyped(KeyEvente){
processTextArea();
}
}
);
//编辑区鼠标事件
textArea.addMouseListener(
newMouseAdapter(){
publicvoidmouseReleased(MouseEvente){
if(e.getButton()==MouseEvent.BUTTON3)
popUpMenu.show(editMenu,e.getX(),e.getY());
}
publicvoidmouseClicked(MouseEvente){
if(e.getButton()==MouseEvent.BUTTON1)
popUpMenu.setVisible(false);
}
}
);
}
privatevoidopenFile(){
if(isCurrentFileSaved()){//文件是否为保存状态
open();//打开
}
else{
//显示对话框
intoption=JOptionPane.showConfirmDialog(
null,"文件已修改,是否保存?
",
"保存文件?
",JOptionPane.YES_NO_OPTION,
JOptionPane.WARNING_MESSAGE,null);
switch(option){
//确认文件保存
caseJOptionPane.YES_OPTION:
saveFile();//保存文件
break;
//放弃文件保存
caseJOptionPane.NO_OPTION:
open();
break;
}
}
}
privatebooleanisCurrentFileSaved(){
if(stateBar.getText().equals("未修改")){
returnfalse;
}
else{
returntrue;
}
}
privatevoidopen(){
//fileChooser是JFileChooser的实例
//显示文件选取的对话框
intoption=fileChooser.showDialog(null,null);
//使用者按下确认键
if(option==JFileChooser.APPROVE_OPTION){
try{
//开启选取的文件
BufferedReaderbuf=
newBufferedReader(
newFileReader(
fileChooser.getSelectedFile()));
//设定文件标题
setTitle(fileChooser.getSelectedFile().toString());
//清除前一次文件
textArea.setText("");
//设定状态栏
stateBar.setText("未修改");
//取得系统相依的换行字符
StringlineSeparator=System.getProperty("line.separator");
//读取文件并附加至文字编辑区
Stringtext;
while((text=buf.readLine())!
=null){
textArea.append(text);
textArea.append(lineSeparator);
}
buf.close();
}
catch(IOExceptione){
JOptionPane.showMessageDialog(null,e.toString(),
"开启文件失败",JOptionPane.ERROR_MESSAGE);
}
}
}
privatevoidsaveFile(){
//从标题栏取得文件名称
Filefile=newFile(getTitle());
//若指定的文件不存在
if(!
file.exists()){
//执行另存为
saveFileAs();
}
else{
try{
//开启指定的文件
BufferedWriterbuf=
newBufferedWriter(
newFileWriter(file));
//将文字编辑区的文字写入文件
buf.write(textArea.getText());
buf.close();
//设定状态栏为未修改
stateBar.setText("未修改");
}
catch(IOExceptione){
JOptionPane.showMessageDialog(null,e.toString(),
"写入文件失败",JOptionPane.ERROR_MESSAGE);
}
}
}
privatevoidsaveFileAs(){
//显示文件对话框
intoption=fileChooser.showSaveDialog(null);
//如果确认选取文件
if(option==JFileChooser.APPROVE_OPTION){
//取得选择的文件
Filefile=fileChooser.getSelectedFile();
//在标题栏上设定文件名称
setTitle(file.toString());
try{
//建立文件
file.createNewFile();
//进行文件保存
saveFile();
}
catch(IOExceptione){
JOptionPane.showMessageDialog(null,e.toString(),
"无法建立新文件",JOptionPane.ERROR_MESSAGE);
}
}
}
privatevoidcloseFile(){
//是否已保存文件
if(isCurrentFileSaved()){
//释放窗口资源,而后关闭程序
dispose();
}
else{
intoption=JOptionPane.showConfirmDialog(
null,"文件已修改,是否保存?
",
"保存文件?
",JOptionPane.YES_NO_OPTION,
JOptionPane.WARNING_MESSAGE,null);
switch(option){
caseJOptionPane.YES_OPTION:
saveFile();
break;
caseJOptionPane.NO_OPTION:
dispose();
}
}
}
privatevoidcut(){
textArea.cut();
stateBar.setText("已修改");
popUpMenu.setVisible(false);
}
privatevoidcopy(){
textArea.copy();
popUpMenu.setVisible(false);
}
privatevoidpaste(){
textArea.paste();
stateBar.setText("已修改");
popUpMenu.setVisible(false);
}
privatevoidprocessTextArea(){
stateBar.setText("已修改");
}
publicstaticvoidmain(String[]args){
newJNotePadUI();
}
}
3.安装调试jdk。
4.测试运行程序。
打开运行命令,键入cmd,调出命令提示符。
键入文件所属盘,然后输入javacJNotePadUI.java,生成class文件,继续输入javaJNotePadUI,即可运行程序。