《2023年Java终极大作业报告.pdf》由会员分享,可在线阅读,更多相关《2023年Java终极大作业报告.pdf(62页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Ja v a 语言程序设计展示报告学 院_专 业_组长信息_成员信息1_成员信息2_成员信息3_指导教师_日 期 年 月 日目录第一章。选题概述.1第二章完毕情况2。k 章:JLQ,J、.3一、登陆注册界面展示.31、效果截图3。2、核心代码4。-1,“而 L J 1 LQ、51 效果截图。82、核心代码。8三、服务端界面展示4。1、效果截图。32、核心代码3。四 数据库直连和文献线程.1 0第四章。总结与感受.12第一章选题概述在一学期的Java课程学习之后,我们对J a va语言有了一定的结识与了解。在此基础上我们选择了题目一作为本组的目的,题目的相关规定如下(初期拟完毕目的):设计编程实
2、现桌面文档共享与管理系统(100%)实现以下功能-1.可以实现文献的下载与上传(客户端与服务器端)2.可以通过安全认证与别人分享文档3.能形成“圈子”,对朋友或这陌生人设立不同的安全级别4.可以共享桌面与聊天5.必须用数据库存储信息6.必须用ext e nds和impleme n t s 关键字7.必须用th i s关键字8.必须用图形用户界面9.界面设计与功能不限,充足发挥题目一比较有挑战性,题目中的规定几乎涉及到了我们学过的所有知识,除此之外还需要我们课外学习一些课堂额外的知识,比如数据库的创建于连接。由组长X X X I负责整合所学内容与指挥,成员查阅资料并编写程序,再和组长讨论并完毕各
3、自的模块设计。我们设计了如下的流程图:第二章完毕情况通过将近一个月左右的编程设计,我们实现的桌面文档共享与管理系统(9 0%)实现了以下功能一一1 .可以实现文献的上传(客户端与服务器端)2.可以通过安全认证与别人分享文档3.能形成“圈子”,对朋友或这陌生人设立不同的安全级别4.可以聊天并截取屏幕信息5.采用了数据库存储信息6.采用 了 exten d s 和 imp 1 em e nts 关键字7.采用了 th i s 关键字8.采用了图形用户界面程序的编程设计Ljavvajavvar.jgavaIT Ja士aeca2Mi p.jkhdS C.Jusewjsz c.j/*./4 a.,S.i
4、 I2014/12/30 15:03JAVAft13 KB2014/12/30 15:00JAVA文件5 KB2014/12/30 15:03JAVA文件13 KB2014/12/30 15:03JAVA文件1KB2014/12/29 21:393 KB2014/12/30 15:03JAVA文件2 KB2014/12/30 15:00JAVA文件5 KBi I fwq.java2014/12/30 15:03 JAVA 文件13 KBD jpjava2014/12/30 15:00 JAVA 文件5 KB11 khdjava2014/12/30 15:03 JAVA 文件13 KBI I s
5、cjava2014/12/30 15:03 JAVA 文件1 KBt User.java2014/12/29 21:39 JAVA 文件3 KBj 1 wjsc.java2014/12/30 15:03 JAVA 文件2 KBzcjava2014/12/30 15:00 JAVA 文件5 KB2014/12/30 15:03JAVA文件13 KB2014/12/30 15:00JAVAft5 KB2014/12/30 15:03JAVA文件13 KB2014/12/30 15:03JAVA文件1KB2014/12/29 21:39JAVAtt3 KB2014/12/30 15:03JAVA文件
6、2 KB2014/12/30 15:00JAVA文件5 KB图2-1类成果展示图其中jp.j ava功能为截图;k h d.j a v a 功能为建立客户端;sc.java功能为文献上传线程;zc.j a v a 功能为实现用户登录;Ma i n 功能为总体调用;fwq.java功能为建立服务端;User.j a v a 功能为实现与数据库的连接(直连)。第 三 章 成 果 展 示一、登录注册界面展示1 .效果截图通过我们的编程设计,实现了用户的登录,其运营效果如图3-1所示、登陆成功效果如图3-2示、登陆未成功效果如图3 3 示。注册效果如图3-4所示,注册后数据库数据改变效果如图3-5 示
7、图 3-1 登陆界面运营成功效果图图 3-2 登陆成功效果图图 3-3登陆未成功效果图图 3-4 注册界面效果图2.核心代码相关核心代码及其具体注解如下:pa c kag e ceshi;i mport ja v a.a wt.*;impo r t j a v a .aw t.even timpor t jav a.io.PrintWriter;imp o r t j avax.s w ing.*;p ubl i c c 1 a ss z c exte n ds JFrameUser 1 ogin_u s er=ne w User();JT extF i eldjl=ne w JTextFie
8、ld();/用 户名的文本框J Passwo r dFi e Id jpw=n e w J P assw o rd F ie 1 d();密码的文本框J B u tton jb 1 =n e w JButton(登录”);J Butt o n jb 2=new JBu t to n(注册)p r i v ate Cont a iner a 二 getCo n t e n t P a n e();publi c zc()set L ayou t(nu 1 1);setVisible(t r u e);s e tB o u n ds(600,32 0,40 0,1 60);se t Title(登
9、录窗口)setD e f a u 1 tCl o s eOpera t i o n(W i ndowConstan t s.EXIT_ON_CLOS E);控制窗口关闭。/添加登录和注册的按钮。j b l.setBoun d s(270,10,60,30);o j l.setBounds(1 00,15,10 0,20);jpw.se t Bo u nds(l 0 0,60,1 00,2 0);a.add(jl);a.add(j p w);qbl.a d dActionL i s te n er(n e w A c tio n L i s t e ner()public v o i d act
10、 i o n Perf o rmed(Act i onEvent e)S tr i ng namel=j 1.g etText();S t rin g p a ss w ord 1=n e w Str i ng(jp w.getPassword();“Str i n g p ass word 2=1 o gin_ u ser.get P WD(namel);。o Stri n g se c uri t y 1 =lo g in_ u ser.g e t S CT(namel);。if(pas s w o r d2.t rim().e quals(pa s swordl.tr i m()o if
11、(securit y 1.t rim().equals(H 管理员”)。3 /S y s t em.out,pri n tln(n 3+login_use r.getP W D(n amel);ass e tVisible(fa 1 s e);“JOpti o n P ane.sho wMessageD i a log(null,恭喜您登陆成功!“,”消息”,JOptionPa n e.INF 0 RMATIO N_MESSAGE);gonewfwq();3e lse。setV i s ible(false);gg JOptionPane.showMessageD i al o g(n ull
12、,恭喜您登陆成功!,“消息,J 0p t i o nP a n e.I NF O RMATION_ME S S A G E);“g new khd();8g 0)“b e lse。J Opti o nPane.s h owMessageDialog(null,对不起您的用户名或密码错误!*“错误”,JO P t i onP a ne.ER R OR_MESS A GE);00)0DD j6);j b2.s e tBou n d s(270,55,60,30);a.ad d(jbl);。a.a dd(jb2);j b2.a d dActio n Listene r(n ew Ac t i onL
13、is t en e r()public v o i d act i o n Performed(ActionE v ent e)g Re g iste r c=n e w Reg i ste r();8 。);/添加用户名和密码的标签J L abelj 1 l=ne w JLab el(用户名)可 11.set Bound s(40,10,6 0,30);JLabelj 1 2=n e w J La bel(n 密 码)jl2.setB o unds(4 0,5 5,6 0,30);a.add(j 1 1);oa.a d d(jl 2);00publ i c s ta tic v o id m
14、ain(Stri n g a rgsp)new z c();clas s R e g i ster extends JFrame U s er L ogin_u s e r=n ew User();J TextFi e 1 d jtl=new JT e xtFi e Id();J Tex tFie 1 d jt2=new JT e xtFiel d();J T e xtF i e 1 d j t 3=n e w JTextF i e 1 d();。J Tex t Field j t4=new JT e xtField();。J T e xtField jt 5=n e w JTe x tFie
15、l d();oJButto n j bl=new JButton(“注册”);eJBu t ton jb 2=n ew JB u tton(退 出);JL ab eljll=new JLa b el(M 用户名”);J Label jl2=new JL a b e 1(“密 码“);oJL a bel jl3=new JLab el(n 重新输入密码”);J La b el jl 4=n ew J L abel(邮 箱”);JLa beljl5=new JLabel(身 份)JPan e 1 j p=new J P an e 1 ();pri v a te C o n t a ine r a=
16、getCont e n tP a ne();public Registe r()se t La y o ut(n u 11);o setVisible(tru e);set Title(注 册)。set B ounds(750,3 20,300,250);set B ou n ds(1 0,150,6 0,30);汕2.setBounds(14 0,15 0,60,30);gjll.s e tBounds(10,10,1 0 0,30);何 1 2.set Bo unds(1 0,35,1 00,3 0);j 13.s e t Bo u nds(l 0,6 0,1 0 0,30);j 14.s
17、e t Bounds(10,85,100,30);皿5.se t Bounds(l 0,11 0,1 0 0,3 0);。j tl.se t Bounds(120,15,130,20);。j t 2.s e tBounds(12 0,40,1 3 0,2 0);学3.s e tBou nd s(120,6 5,1 3 0,2 0);j t 4.s e t B o u n d s(12 0,90,1 3 0,2 0);。jt5.s etBounds(l 2 0,11 5,130,2 0);Oda a dd(jbl);0a.a d d(jb2);e a.ad d(j 1 1);a.add(jl 2
18、);。a.add(j13);8a.a d d (jl4);。a.add(jl 5);8a.add(jtl);a.a d d(j t 2);3 a.a dd(j t 3);8a.add(j t4);a.ad d(jt5);jb 1.ad d Action L is t e ne r(n ew Action L isten e r()叩ubl i c void a ctionPerformed(Actio n E v ent e)s Str i n g name 1=jt 1.g etText();String passwo r dl=n e w Str i n g(j t 2.ge t Text
19、();。o S t r i ng rpassw o rdl=new St r ing(jt3.g e t T ext();“6String gen d e r l=new St r i n g(jt 4.ge t Te x t();g Str i ng sec u r ityl=new S t ring(jt 5.g e tText();b 3。g i f(L o gin_u s er.j i a nc h a(namel)=1)g JOpt i o n P a n e.s h owMe s sageDia 1 o g(n u 1 1,“对不起您的用户名已被注册!,错误 n,JO p t io
20、nPan e.ERROR_MESSAGE);。return;0 0 0|3 ge 1 s e if(nam e 1 .length()10)“J Opt i o nPane.sho wMessa g eD i a 1 o g(nul 1 ,”用户名不能大于1 0 位)bbretu r n;。e 1 se i f(p assw o rdl.length()6)g J OptionPane.sh o wM e ssageDi a 1 og(null,n 密码不能小于 6 位”);go r e t urn;0)3 el s e if(passw o r d 1.e qua 1 s(n amel)JO
21、 p t io n Pane,s how Mes s ageD i a 1 og(n u 1 1 J 密码不能与用户名一致”);。r e t urn;6 0 jgg els e i f(!pa s s w o rd 1.e q u a l s(r p assw o r d 1)“b J O p tion P an e.s h owMes s ageDialog(n u UJ两次输入的密码不同 样”);3 凸 r e turn;000)e L ogin_use r.inse r t(n a me 1 ,p as s wordl,r pa s sw o rdl,gend e rl,securi t
22、 y l);JOptionPa n e.sho wMes s a geD i a 1 og(null,”注册成功广);3 0setV i s ible(f a 1 s e);0000)0)0);可 b2.a dd Action List e ne r(n e w A c tio n L i ste n e r()p ubli c void act i o nPer f o r me d(Ac t ionEv e nt e)。set V i s ibl e(fal s e););O *M*r,P*W.tmerprwe-My(tQ O z-*一.0 0.,-9-,.MMUUOMil:*MMMnn:
23、ii.fWQfOMIt g zU k h d Zit KwaJ UWJMItf wjKjMVit M M Sy,m lilM R44ernced I,.prlwt Strln(private$trin(*UwifStrinQ.Suing)getName,(etNn(Strng)Q elpO,)wtlp(Swing.oJ*Uw*O getPWtXSnmg),mg QetSCTJSttinfl)suing|Uncha(String)intng.SHinq.Suing.String Sttin20191?月 29BT年 3f*m JXcch2rrtc-Uwr.jvZcnhifwcftMhVUMT.j
24、ava31M 5 bytMD U J O.3 g k J H筋 M J;二、客户端界面展示1.效果截图通过我们的编程设计,实现了客户端的相关操作,其运营效果如图3-6所示,可以实现连接服务端、断开,选择文献并上传文献、发送、截屏等操作图 3-6 客户端界面图2.核心代码核心代码如下:p a c k a g e c e s h i;import java,a w t.*;i m p o r t j a v a.a w t .e v e n t.*;i m p o r t j a v a x.s w i n g.*;i m p o r t j a v a x.s w i n g,b o r d e
25、 r.T i t l e d B o r d e r;i m p o r t c e s h i.w j s c ;i m p o r t j a v a,a w t .i m p o r t j a v a.a w t.e v e n t.*;i m p o r t j a v a.i o .*;i m p o r t j a v a.n e t.S o c k e t;i m p o r t j a v a.u t i l.H a s h M a p ;i m p o r t j a v a.u t i 1.M a p;i m p o r t j a v a.u t i l.S t r i
26、 n g T o k e n i z e r;public c l a s s k h d e x t e n d s JFr a m e o U s e r Lo g i n _ u s e r=n e w U s e r ();o JBu t t o n j b l=n e w J Bu t t o n (发送”);J Bu t t o n j b 2=n e w JBu t t o n(文献);JBu t t o n j b 3=n e w JBu t t o n (连接);,JBu t t o n j b 4 =n e w JBu t t o n (断开);s t a t i c JB
27、u t t o n j b 5 =n e w J Bu t t o n (上传);o JBu t t o n j b 6=n e w JBu t t o n (截屏”);s t a t i c JT e x t A r e a j t l=n e w JT e x t A r e a(l,1);o J T e x t A r e a j t 2=n e w JT e x t A r e a (1,1);JT e x t F i e l d j t 3=n e w JT e x t F i e l d C1 2 7.0.0.1);J T e x t F i e 1 d j t 4=n e w J
28、T e x t Fi e l d(6 9 9 9 );JT e x t Fi e 1 d j t 5=n e w J T e x t F i e 1 d(n d );4T e x t Fi e l d j t 6=n e w J T e x t Fi e 1 d();J T e x t Fi e l d j t 7 =n e w JT e x t Fi e 1 d();o JLa b e l j l l=n e w JLa b e 1 (聊天窗口 );f t JLa b e 1 j 1 2=n e w J La b e l (写 消 息 );J L a b e l j 1 3=n e w JL
29、a b e 1 (服务器 IP);J L a b e l j 1 4=n e w J La b e l (端口);o JLa b e l j l 5=n e w JL a b e l(昵称“);J Fi l e Ch o o s e r j l =n e w J Fi 1 e Ch o o s e r ();s t a t i c Fi l e f i l e Fl a g =n e w Fi 1 e();o s t a t i c Fi 1 e f i 1 e ;o p r i v a t e S o c k e t s o c k e t;p r i v a t e S o c k e t
30、 s o c k e t 2;p r i v a t e P r i n t W r i t e r w r i t e r;p r i v a t e B u f f e r e d R e a d e r r e a d e r ;p r i v a t e M e s s a g e T h r e a d m e s s a g e T h r e a d;/负责接受消息的线程o p r i v a t e M a p o n L i n e U s e r s =n e w Ha s h M ap();/所有在线用户 p r i v a t e b o o l e a n i s C
31、 o n n e c t e d =f a l s e;,p r i v a t e Co n t a i n e r a =g e t C o n t e n t P a n e ();叩 u b l i c k h d()s e t L a y o u t (n u 1 1);s e t V i s i b 1 e (t r u e);。s e t T i t l e (聊天室);o s e t Bo u n d s (6 0 0,1 5 0,4 6 0,6 0 0 );o j 1 1.s e t B o u n d s (1 0,5 0,1 0 0,2 0 );S c r o l l P
32、 a n e j s 1 =n e w J S c r o l l P a n e(j t l);o j t 1 .s e t E d i t a b l e (f a Is e);j s 1 .s e t Bo u n d s (1 0,8 0,4 2 0,2 8 0);a .a d d(j s 1 );叫 a d d(j l l);3 j l 2.s e t Bo u n d s(1 0,4 2 0,1 0 0,2 0);a J S c r o U P a n e j s 2 =n e w J S c r o l l P a n e (j t 2);e j s 2 .s e t Bo u
33、n d s (1 0,4 4 0,4 2 0,8 0 );阻 a d d (j s 2);a.a d d (j l 2);匕 j b l.s e t Bo u n d s (2 5 0,3 7 0,6 0 ,3 0);8 a.a d d(j b 1 );e j b 3 .s e t Bo u n d s (3 1 0 ,3 7 0,6 0,3 0 );a.a d d (j b 3);。j b 4.s e t Bo u n d s (3 7 0,3 7 0,6 0,3 0);a .a d d (j b 4);o j b 5.s e t B o u n d s(1 9 0,3 7 0,6 0,3
34、0 );a .a d d(j b 5 );o j b 6.s e t Bo u n d s (1 0,3 7 0,6 0,3 0);阳.a d d (j b 6 );b j b 2.s e t B o u n d s (7 0,3 7 0,6 0,3 0);a.a d d(j b 2);j t 6.s e t B o u n d s (1 3 0,3 7 0,6 0,3 0 );8 a.a d d(j t 6 );g j t 3 .s e t Bo u n d s (6 0,1 0,1 0 0,2 0 );3 a .a d d(j t 3);。j l 3.s e t Bo u n d s(1
35、0,1 0,1 0 0,2 0 );a.a d d(j 1 3);j t 4.s e t Bo u n d s (2 0 0,1 0,1 0 0,2 0);。a.a d d(j t 4);j l 4.s e t B o u n d s (1 6 8,1 0,1 0 0,2 0);汨.a d d(j 1 4);e j t 5.s e t Bo u n d s(3 3 0,1 0,1 0 0,2 0);a a.a d d(j t 5);j l 5 .s e t Bo u n d s (3 0 0,1 0,1 0 0,2 0);a a d d(j l 5);。/按钮控制g j b l.a d d A
36、 c t i o n Li s t e n e r (n e w A c t i o n Li s t e n e r ()p u b 1 i c v o i d a c t i o n P e r f o r m e d(A c t i o n Ev e n t ar g 0 )s e n d(););g j b 2,a d d A c t i o n L i s t e n e r (n e w A c t i o n L i s t e n e r ()。叩u b 1 i c v o i d a c t i o n P e r f o r m e d (A c t i o n Ev en
37、t e)g i n t n =j 1.s h o w O p e n Di a 1 o g(n u l 1 );S t r i n g f i l e n a m e =j 1 .g e t S e 1 e c t e dFi l e ().t o S t r i n g ();必 i f (n =J Fi l e Ch o o s e r.A P P R 0 V E _ O P T IO N)g j t 6.s e t T e x t (f i l e n a m e );。f i 1 e F 1 a g =n e w Fi l e(f i l e n a m e);file=j l.g e
38、 t S e l e c t e d Fi l e();吟 S y s t e m,o u t.p r i n t l n(M n+f i l e );OOO-);j b 3.a d d A c t i o n Li s t e n e r (n e w A c t i o n L i s t e n e r ()p u b 1 i c v o i d a c t i o n P e r f o r m e d(A c t i o n Ev e n t e )(i n t p o r t;i f (i s C o n n e c t e d)J O p t i o n P a n e.s h
39、o w M e s s a g e Di a l o g(n u l l,“已处在连接上状态,不要反复连接!,”错误,JO p t i o n P a n e.ER R O R _ M ESS A G E);r e t u r n ;try(port=In t e g e r .p a r s e l n t (j t 4.g e t T ex t ().t r i m ();c a t c h (N u m b e r Fo r m a t Ex c e p t i o n e 2)t h r o w new Ex c e p t i o n (端标语不符合规定!端口为整数!);)S t r
40、 i n g h o s t i p =j t 3.g e t T e x t ().t r i m ();String n a m e o=j t 5.g e t T e x t ().t r i m();i f (n a m e,e q u a 1 s ()|h o s t l p.e q u al s(”)(t h r o w n e w E xcept i o n (姓名、服务器I P不能为空!”);)b o o l e a n f l a g =c o n n e c t S e r v e r(p o r t,h o s t Ip,n a m e);i f (f l a g =f
41、a Is e)t h r o w n e w Ex c e p t i o n (与服务器连接失败!);)s e t T i t i e (n a m e );JO p t i o n Pan e .s h o w M e s s a g e Di a l o g(n u l l,成功连接!”);c a t c h (Ex c e p t i o n e x c)J O p t i o n P a n e .s h o w M e s s a g e Di a l o g (n u l l,e x c.g e t M e s s a g e (),错误;J O p t i o n P a n
42、e.E R R O R _ M ESS A GE)j b 4.a d d A c t i o n Li s t e n e r (n e w A c t i o n Li s t e n e r ()p u b l i c v o i d a c t i o n P e r f o r m e d(A c t i o n Ev e n te)i f (!i s Co n n e c t e d)JO p t i o n P a n e .s h o w M e s s a g e D i al o g(n u l l,已处在断开状态,不要反复断开!,”错误,JO p t i o n P a n
43、 e.ER R O R JlE S S A GE);r e t u r n ;t r y (b o o l e a n flag=c l o s e Co n n e c t i o n ();/断开连接i f (f l a g =f a Is e)t h r o w n e w Ex c e p t!o n (断开连接发生异常!”);)JO p t i o n P a n e.s h o w M e s s a g e Di a l o g (n u l1,“成功断开!”);c a t c h (Ex c e p t i o n e x c)J O p t i o n P a n e.s h
44、 o w M e s s a g e Di a l o g(n u le x c.g e t M e s s a g e (),错误,J O p t i o n P a n e.E R R O R _ M ES S A G E););g j b 6.a d d A c t i o n Li s t e n e r (n e w A c t i o n Li s t e n e r ()p u b l i c v o i d a c t i o n P e r f o r m e d (A c t i o n Ev e n t a r g 0)n e w j p();R e c t D r d
45、=n e w R e c t D ();Gr a p h i c s D evice g d =Gr a p h i c s En v i r o n m en t.g e t Lo c a l Gr a p h i c s En v i r o n m e n t ().g e t De f a u l t S c r e e n D e v i c e ();g d .s e t F u U S c r e e n W i n d o w (r d););p u b l i c s y n c h r o n i z e d b o o 1 e a n c 1 o s e C o n n
46、e c t i o n O t r y s e n d M e s s a g e (CL0 S E );/发送断开连接命令给服务器m e s s a g e T h r e a d.s t o p ();/停止接受消息线程/释放资源i f (r e a d e r !=n u l l)r e a d e r,c l o s e ();0)。i f (w r i t e r !=n u l l)w r i t e r.c l o s e ();。i f (s o c k e t !=n u l 1 )s o c k e t.c l o s e();6)。i s C o n n e c t e
47、d =f a Is e;。r e t u r n t r u e;c a t c h (I O Ex c e p t i o n e l)e 1.p r i n t S t a c k T r a c e 0 ;匕i s Co n n e c t e d =t r u e;r e t u r n f a l s e;6。)p u b l i c v o i d s e n d M e s s a g e (S t r i n g m e s s a g e)w r i t e r.p r i n t i n (m e s s a g e);w r i t e r.f l u s h ();)p
48、 u b l i c v o i d s e n d ()i f (!i s Co n n e c t e d)J O p t i o n P a n e .s h o w M e s s a g e Di a l o g (n u 1 1,”还没有连接 服 务 器,无法发送消息!,错误,JO p t i o n P a n e.ER R O R _ M ES S A GE);r e t u r n;)S t r i n g m e s s a g e =j t 2.g e t T e x t ().t r i m();i f (m e s s a g e =n u l l I I m e s
49、 s a g e.e q u a Is (”)JO p t i o n P a n e .s h o w M e s s a g e Di a 1 o g(n u 1 1,消息不能为空!,错误,J Op t i o n P a n e.ER R O R _ M ES S A G E);r e t u r n ;s e n d M e s s a g e(g e t T i t 1 e ()+A L L +矿 +mes s a g e);j t 2.s e t Tex t(nu l l);pu b 1 i c s t a t i c v o id ma i n(S t ri ng a rg s
50、)。n e w k h d ();dc 1 a s s Me s s a ge T h r e a d e xt e nd s T h r e a d pri va t e B u f f e re d R e a d e r re a d e r;pr i v a t e J T e x t A r e a t e xt Are a;/接受消息线程的构造方法。pu b 1 i c Me s s a g e T h re a d (B u f f e r e d Reade r re a d e r,J T e x t Are a t e x t A r e a)。t h i s,r eade