49写字板一.docx
- 文档编号:24049738
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:11
- 大小:23.18KB
49写字板一.docx
《49写字板一.docx》由会员分享,可在线阅读,更多相关《49写字板一.docx(11页珍藏版)》请在冰豆网上搜索。
49写字板一
练习49写字板
(一)
本例知识点
一句话讲解
新学知识
使用JMenuBar类
制作菜单
使用JToolBar类
制作工具条
已学知识
使用JMenuItem类
制作菜单内容
使用ImageIcon类
导入工具条按钮图案
一、练习具体要求
本练习实现写字板的一个子功能——界面制作,如图49-1所示。
程序执行后将生成一个写字板的界面。
该界面中含有菜单界面,用户可以通过菜单来选择自己的编辑动作。
用户也可以通过点击界面中的工具条进行相应的编辑操作。
二、程序及注释
(1)编程思路:
本练习因为要实现写字板界面的制作,所以首先要制作界面菜单,通过语句JMenuBarjmb=newJMenuBar()生成菜单条,然后通过语句JMenuItemjmi制作菜单内容。
然后,制作工具条,首先通过JToolBartoolBar=newJToolBar()语句实例化工具条JtoolBar类,然后通过语句JButtonbutton=newJButton(newImageIcon("images/new.gif"))为工具条添加图片按钮,最后通过语句button.addActionListener(newActionListener()为工具条添加事件监听。
(2)程序实现及注释:
//JNotepadTest.java
importjava.awt.*;
importjava.awt.event.*;
importjava.awt.print.*;
importjava.awt.datatransfer.*;
importjava.io.*;
importjavax.swing.*;
importjavax.swing.event.*;
importjavax.swing.text.*;
publicclassJNotepadTestextendsJPanel
{
//变量定义
JTextAreajta=newJTextArea("",24,40);
JScrollPanejsp=newJScrollPane(jta);
//菜单条
JMenuBarjmb=newJMenuBar();
JMenufile=newJMenu("文件");
JMenuedit=newJMenu("编辑");
JMenusearch=newJMenu("查找");
//工具条
JToolBartoolBar=newJToolBar();
//菜单内容
JMenuItemjmi;
//实例化剪切板
Clipboardclipbd=getToolkit().getSystemClipboard();
//打印功能
PrinterJobprtMe=PrinterJob.getPrinterJob();
Stringtext="";
//构造函数
publicJNotepadTest()
{
classnewLimplementsActionListener
{
publicvoidactionPerformed(ActionEvente)
{
jta.setDocument(newPlainDocument());
}
}
//打开功能
classopenLimplementsActionListener
{
publicvoidactionPerformed(ActionEvente)
{
JFileChooserfc=newJFileChooser();
intreturnVal=fc.showDialog(JNotepadTest.this,"打开");
if(returnVal==JFileChooser.APPROVE_OPTION)
{
Stringfile=fc.getSelectedFile().getPath();
if(file==null)
{
return;
}
//读取文件
try
{
Readerin=newFileReader(file);
char[]buff=newchar[4096];
intnch;
while((nch=in.read(buff,0,buff.length))!
=-1)
{
jta.setDocument(newPlainDocument());
jta.append(newString(buff,0,nch));
}
}
catch(IOExceptionio)
{
System.err.println("IOException:
"+io.getMessage());
}
}
else
{
return;
}
}
}
//保存文件
classsaveLimplementsActionListener
{
publicvoidactionPerformed(ActionEvente)
{
JFileChooserfc=newJFileChooser();
intreturnVal=fc.showSaveDialog(JNotepadTest.this);
if(returnVal==JFileChooser.APPROVE_OPTION)
{
Stringsavefile=fc.getSelectedFile().getPath();
if(savefile==null)
{
return;
}
else
{
StringdocToSave=jta.getText();
if(docToSave!
=null)
{
FileOutputStreamfstrm=null;
BufferedOutputStreamostrm=null;
try
{
fstrm=newFileOutputStream(savefile);
ostrm=newBufferedOutputStream(fstrm);
byte[]bytes=null;
try
{
bytes=docToSave.getBytes();
}
catch(Exceptione1)
{
e1.printStackTrace();
}
ostrm.write(bytes);
}
catch(IOExceptionio)
{
System.err.println("IOException:
"+
io.getMessage());
}
finally
{
try
{
ostrm.flush();
fstrm.close();
ostrm.close();
}
catch(IOExceptionioe)
{
System.err.println("IOException:
"+
ioe.getMessage());
}
}
}
}
}
else
{
return;
}
}
}
//页面设置
classpageSetupLimplementsActionListener
{
publicvoidactionPerformed(ActionEvente)
{
prtMe.printDialog();
}
}
//打印
classprintLimplementsActionListener
{
publicvoidactionPerformed(ActionEvente)
{
try
{
prtMe.print();
}
catch(Exceptionew)
{
}
}
}
//退出
classexitLimplementsActionListener
{
publicvoidactionPerformed(ActionEvente)
{
System.exit(0);
}
}
//复制
classcopyLimplementsActionListener
{
publicvoidactionPerformed(ActionEvente)
{
Stringselection=jta.getSelectedText();
StringSelectionclipString=newStringSelection(selection);
clipbd.setContents(clipString,clipString);
}
}
//剪切
classcutLimplementsActionListener
{
publicvoidactionPerformed(ActionEvente)
{
Stringselection=jta.getSelectedText();
StringSelectionclipString=newStringSelection(selection);
clipbd.setContents(clipString,clipString);
jta.replaceRange("",jta.getSelectionStart(),
jta.getSelectionEnd());
}
}
//粘贴
classpasteLimplementsActionListener
{
publicvoidactionPerformed(ActionEvente)
{
TransferableclipData=clipbd.getContents(JNotepadTest.this);
try
{
StringclipString=
(String)clipData.getTransferData(
DataFlavor.stringFlavor);
jta.replaceRange(clipString,
jta.getSelectionStart(),jta.getSelectionEnd());
}
catch(Exceptionex)
{
}
}
}
//删除
classdeleteLimplementsActionListener
{
publicvoidactionPerformed(ActionEvente)
{
Stringselection=jta.getSelectedText();
jta.replaceRange("",jta.getSelectionStart(),
jta.getSelectionEnd());
}
}
//全部选择
classselectAllLimplementsActionListener
{
publicvoidactionPerformed(ActionEvente)
{
jta.selectAll();
}
}
//查找
classfindLimplementsActionListener
{
publicvoidactionPerformed(ActionEvente)
{
Stringfind="";
find=JOptionPane.showInputDialog(
"查找的内容:
");
}
}
//查找下一个
classfindNextLimplementsActionListener
{
publicvoidactionPerformed(ActionEvente)
{
}
}
三、练习效果(如图49-1所示)
本实例代码编写完毕,具体的存盘操作需要配合练习50写字板
(二)一起进行,本实例能够达到的效果如下图所示:
图49-1练习效果
四、总结提高
在本练习中,利用Java标准类库的图形界面技术实现了写字板界面的制作,通过图片技术导入了工具条的图片。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 49 写字板
![提示](https://static.bdocx.com/images/bang_tan.gif)