构造JTextArea组件Word格式文档下载.docx
- 文档编号:16570067
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:10
- 大小:18.20KB
构造JTextArea组件Word格式文档下载.docx
《构造JTextArea组件Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《构造JTextArea组件Word格式文档下载.docx(10页珍藏版)》请在冰豆网上搜索。
JLabell1=newJLabel("
一:
"
JLabell2=newJLabel("
二:
JLabell3=newJLabel("
三:
JLabell4=newJLabel("
四:
JTextAreat1=newJTextArea();
JTextAreat2=newJTextArea(2,8);
JTextAreat3=newJTextArea("
JTextArea3"
JTextAreat4=newJTextArea("
JTextArea4"
5,10);
t1.setText("
//setText()方法会将原来的内容清除
t2.append("
JTextArea2"
//append()方法会将设置的字符串接在原来JTextArea内容文字之后.
t4.setLineWrap(true);
//设置换行
gbc.gridy=1;
gbc.gridx=0;
p1.add(l1,gbc);
gbc.gridx=1;
p1.add(t1,gbc);
gbc.gridy=2;
p1.add(l2,gbc);
p1.add(t2,gbc);
gbc.gridy=3;
p1.add(l3,gbc);
p1.add(t3,gbc);
gbc.gridy=4;
p1.add(l4,gbc);
p1.add(t4,gbc);
contentPane.add(p1);
f.pack();
f.show();
f.addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
System.exit(0);
}
});
在JTextArea中我们可以使用setTabSize()方法设置[Tab]键的跳离距离,或是setFont()方法设置字体。
当我们输入的文字超过
JTextArea的右边界及下边界时,会看不到接下来打的内容,那该怎么办呢?
你可以使用JScrollPane使JTextArea具备滚动的能力,
或是搭配setLineWrap()方法就能让文字自动换行。
JTextArea还提供一个setWrapStyleWord()方法,可以让换行的时候不会造成断
字的现象,这在Word或使用OutLook写信时都可以看到这个效果。
例如我们在行尾中输入“自动换行”四个字,但此行最多只能在容
纳两个字,因此JTextArea会将此四个字均移到下一行,不会造成“自动”在上行,"
换行"
在下行的情形。
这在处理英文输入上较为
重要,因为setWrapStyleWord()是利用空白当作是一个字输入的结果。
我们来看下面的范例:
publicclassJTextArea2{
p1.setLayout(newGridLayout(1,1));
构造TextArea-使用GridLayout,加ScrollBar"
JTextAreat1=newJTextArea(5,25);
t1.setTabSize(10);
t1.setFont(newFont("
标楷体"
Font.BOLD,16));
t1.setLineWrap(true);
//激活自动换行功能
t1.setWrapStyleWord(true);
//激活断行不断字功能
p1.add(newJScrollPane(t1));
//将JTextArea放入JScrollPane中,这样就能利用滚动的效果看到输入超过JTextArea高度的
//文字.
我们再举一个例子,使JTextArea具有copy、paste、cut的功能:
publicclassJTextArea3implementsActionListener{
JTextAreatextarea=null;
JButtonb1,b2,b3;
publicJTextArea3(){
textarea=newJTextArea(10,15);
JScrollPanescrollPane=newJScrollPane(textarea);
JPanelpanel=newJPanel();
panel.setLayout(newGridLayout(1,3));
b1=newJButton("
Copy"
b1.addActionListener(this);
b2=newJButton("
Paste"
b2.addActionListener(this);
b3=newJButton("
Cut"
b3.addActionListener(this);
panel.add(b1);
panel.add(b2);
panel.add(b3);
contentPane.add(scrollPane,BorderLayout.CENTER);
contentPane.add(panel,BorderLayout.SOUTH);
newJTextArea3();
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==b1){
textarea.copy();
if(e.getSource()==b2){
textarea.paste();
if(e.getSource()==b3){
textarea.cut();
9-4-2:
JTextArea的事件处理:
由于JTextArea是一个二维的输入组件,因此[Enter]键在JTextArea中代表的意义只是单纯的换行字符而不再是一个事件驱动的
切入点。
那么我们该如何来处理JTextArea的事件呢?
还记得我们在前面介绍过Listener的机制吗?
相同的,我们一样需要使用
Listener的机制来处理发生在JTextArea中的事件,只是不再是以前提到的ActionListener了。
在JTextArea中使用的Listener有两
种,一个是UndoableEditListener,另一个是DocumentListener.UndoableEditListenerinterface是负责纪录JTextArea中所有操作
发生的顺序并且可以运行还原上一步的功能。
这个功能在目前的软件中应用相当广泛,如文书编辑软件Word中的复原功能、小画家
中的复原功能,相信大家都有使用过。
DocumentListenerinterface则是纪录发生在JTextArea中所有的事件(如键入字符、删除
字符、剪下、贴上)并将所有的事件以树状的层次式结构组织起来;
也就是说当JTextArea中的内容有任何变动时,会DocumentEvent
,此时必须使用DocumentListener接口中的方法来处理此事件。
我们来看下面这个范例,使JTextArea具有复原的功能:
/*由于会使用到复原和事件驱动功能,因此需要将javax.swing.undo和javax.swing.event两个package包含进来
*/
importjavax.swing.undo.*;
importjavax.swing.event.*;
/*JTextArea4类继承JFrame类并实作UndoableEditListenerinterface.实作UndoableEditListenerinterface就必须要编写其中的
*undoableEditHappened().
publicclassJTextArea4extendsJFrameimplementsUndoableEditListener{
privateUndoableEditedit;
privateJTextAreajta;
privateJTextAreamessage;
privateJMenuItemundoitem;
privateJMenuItemredoitem;
publicJTextArea4(){
super("
jta=newJTextArea();
jta.getDocument().addUndoableEditListener(this);
//将JTextArea加入UndoableEditListener.
message=newJTextArea();
message.setEditable(false);
//利用setEditable()方法将另一个JTextArea设置为不可编辑.
JPanelp1=newJPanel();
EditArea"
p1.add(newJScrollPane(jta));
//--begin:
分别将两个JTextArea通过JPanel放到JFrame中。
JPanelp2=newJPanel();
p2.setLayout(newGridLayout(1,1));
p2.setBorder(BorderFactory.createTitledBorder("
Message"
p2.add(newJScrollPane(message));
getContentPane().setLayout(newGridLayout(2,1));
getContentPane().add(p1);
getContentPane().add(p2);
//--end
//建立目录菜单并放置到JFrame中.
JMenuBarbar=newJMenuBar();
JMenutheMenu=newJMenu("
Edit"
undoitem=newJMenuItem("
Undo"
redoitem=newJMenuItem("
Redo"
theMenu.add(undoitem);
theMenu.add(redoitem);
bar.add(theMenu);
updateMenuItem();
//构造目录菜单
setJMenuBar(bar);
setSize(300,300);
//采用innerclass方式,分别构造菜单选项被点选后的运行操作。
分别调用undo(),redo()方法来完成.
undoitem.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventev){
edit.undo();
//运行undo功能
message.append("
-Undo-\n"
redoitem.addActionListener(newActionListener(){
edit.redo();
//运行redo功能
-Redo-\n"
}//endofJTextArea4()
publicvoidundoableEditHappened(UndoableEditEventev){
StringBufferbuf=newStringBuffer(200);
/*当用户在TextArea中有所操作时,就可以用getEdit()方法取得UndoableEdit对象,此对象纪录着刚刚用户的操作,因
*此可由些对象的undo()或redo()达到取消或复原的功能.
edit=ev.getEdit();
buf.append("
undoableEdit:
buf.append(edit.getPresentationName());
\n"
message.append(buf.toString());
}//endofundoableEditHappened()
//判断是否此时是否可以运行undo或redo的功能,并且改变目录菜单的状态值.
publicvoidupdateMenuItem(){
if(edit!
=null){
undoitem.setEnabled(edit.canUndo());
redoitem.setEnabled(edit.canRedo());
undoitem.setText(edit.getUndoPresentationName());
redoitem.setText(edit.getRedoPresentationName());
}else{
undoitem.setEnabled(false);
redoitem.setEnabled(false);
undoitem.setText("
redoitem.setText("
}//endofupdateMenu()
publicstaticvoidmain(Stringargs[]){
JFramef=newJTextArea4();
f.addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
}//endofmain()
}//endofclassJTextArea4
我们在前面提到Enter键在JTextArea中不再是事件驱动的切入点,因此我们要利用Listener的机制来控制JTextArea的事件驱动
。
但是,我们要怎么样知道在JTextArea中的数据内容呢?
这就要了解JTextArea的存储模式了,JTextArea把输入区内的每一行当成
一个独立的单无(Element),并依照Document内规划的树状结构来存储,也就是说在JTextArea的第一行属于Element0、第二行属于
Element1、第三行属于Element2等等。
不论我们在费心的去处理。
接下来我们来看看,Element和DocumentListenerinterface的
用法。
我们改写JTextArea4.java加入DocumentListener,将程序存储为JTextArea5.java.
importjavax.swing.text.*;
publicclassJTextArea5extendsJFrameimplementsUndoableEditListener,DocumentListener{
publicJTextArea5(){
JTextArea"
jta=newJTextArea();
jta.getDocument().addDocumentListener(this);
}//endofJTextArea5
messag
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 构造 JTextArea 组件