java 选项事件

合集下载

Java标签、按钮和按钮事件简介

Java标签、按钮和按钮事件简介

Java标签、按钮和按钮事件简介Java标签、按钮和按钮事件简介标签和按钮也许是图形界面中最常见的两种组件,按钮又总是与激发动作事件有关。

标签标签(JLabel)是最简单的Swing组件。

标签对象的作用是对位于其后的界面组件作说明。

可以设置标签的属性,即前景色,背景色、字体等,但不能动态地编辑标签中的文本。

程序关于标签的基本内容有以下几个方面:1.声明一个标签名;2.创建一个标签对象;3.将标签对象加入到某个容器。

JLabel类的主要构造方法是:1.JLabel ():构造一个无显示文字的标签;2.JLabel (String s):构造一个显示文字为s的标签;3.JLabel(String s, int align):构造一个显示文字为s的标签。

align为显示文字的水平方式,对齐方式有三种:左对齐:JLabel.LEFT中心对齐:JLabel.CENTER右对齐:JLabel.RIGHTJLabel类的其他常用方法是:1.setText(String s):设置标签显示文字;2.getText():获取标签显示文字;3.setBackground(Color c):设置标签的背景颜色,默认背景颜色是容器的背景颜色;4.setForeground(Color c):设置标签上的文字的颜色,默认颜色是黑色。

按钮按钮(JButton)在界面设计中用于激发动作事件。

按钮可显示文本,当按钮被激活时,能激发动作事件。

JButton常用构造方法有:1.JButton():创建一个没有标题的按钮对象;2.JButton(String s):创建一个标题为s的按钮对象。

JButton类的其他常用方法有:1.setLabel(String s):设置按钮的标题文字。

2.getLabel():获取按钮的标题文字。

3.setMnemonic(char mnemonic):设置热键4.setToolTipText(String s):设置提示文字。

JAVA常用方法事件大全

JAVA常用方法事件大全

JAVA常用方法事件大全JAVA是一种面向对象的编程语言,它提供了众多常用方法和事件来满足程序开发的需求。

下面是JAVA常用方法和事件的详细介绍:1. equals(Object obj)方法:用于比较两个对象是否相等。

默认情况下,它比较的是两个对象的引用是否相等,可以根据需要重写该方法,来比较对象的内容是否相等。

2. hashCode(方法:返回对象的哈希码值。

哈希码是一个整数值,用于快速确定对象在哈希表中的位置。

3. toString(方法:返回对象的字符串表示。

默认情况下,它返回的是对象的类名和对象的哈希码值。

4. getClass(方法:返回对象的运行时类。

运行时类是指对象所属的实际类,而不是对象的引用类型。

5. clone(方法:用于创建并返回对象的副本。

该方法是浅拷贝,即只复制对象的引用,而不复制对象本身。

6. finalize(方法:用于在对象被垃圾回收器回收之前执行一些清理工作。

该方法在对象被销毁之前调用。

7. wait(方法:使线程进入等待状态,直到另一个线程通知它被唤醒。

该方法用于线程之间的通信。

8. notify(和notifyAll(方法:用于唤醒一个或多个正在等待的线程。

这些线程在调用wait(方法后被阻塞。

9. get(和set(方法:用于访问对象的属性。

get(方法用于获取属性的值,set(方法用于设置属性的值。

10. Math类:提供了一些常用的数学方法,如绝对值、四舍五入、最大值、最小值等。

11. String类:提供了一系列字符串操作的方法,如连接字符串、查找子串、替换字符等。

12. StringBuffer和StringBuilder类:用于处理可变的字符串。

它们提供了一些方法进行字符串的添加、删除、插入和替换。

13. ArrayList类:动态数组,可以存储任意类型的对象。

它提供了一些方法进行元素的增加、删除、修改和查询。

14. HashMap类:哈希表,用于存储键值对。

JAVA第四章课后习题解答

JAVA第四章课后习题解答
public Test4_8(){ super("简单的四则运算器"); setSize(300,400); setVisible(true); setLayout(new GridLayout(3,1));
txtFl1=new TextField(5); txtFl2=new TextField(5); txtFl3=new TextField(5); btn1=new Button("+"); btn2=new Button("-"); btn3=new Button("*"); btn4=new Button("÷");
public class Test4_9 extends Frame implements ActionListener{ Button btn; public Test4_9(){ super("弹出窗口练习"); setSize(300,200);
5
setVisible(true); setLayout(new BorderLayout());
TextField txtFl1,txtFl2,txtFl3;
2
Button btn; public Test4_6(){
super("简单加法运算器"); setSize(300,200); setVisible(true); setLayout(new FlowLayout());
txtFl1=new TextField(5); txtFl2=new TextField(5); txtFl3=new TextField(10); btn=new Button("=");

中职模块8图形用户界面编程电子课件 Java程序设计案例教程中职 中职 高教版(共35

中职模块8图形用户界面编程电子课件 Java程序设计案例教程中职   中职 高教版(共35

目录
5. 文本框
JTextField类是一种经常使用的组件,它主要提供了 下列几种构造方法:
JTextField():无参数的构造方法,创建一个初始为 空、可显示字符列数为0的文本框对象。 JTextField(String text):创建一个初始内容为text的文 本框对象。
JTextField(String text,int col):创建一个初始内容 为text、可显示字符列数为col的文本框对象。
目录
5. 文本框
文本框是接受用户输入的一种组件,SwTextField和JPasswordField,用于显示和编辑 较短的、不带格式的一行文本。其中,类 JPasswordField是类JTextField的子类,用于输入口令。 文本字段的使用基于动作事件(即主要监听动作类型的 事件ActionEvent),与按钮等简单控件的用法类似。
目录
8.2.4 布局管理
BorderLayout布局管理器
BorderLayout是JFrame和 JDialog两种容器的默认布局管理器, 它将容器分为5个部分,分别命名为 North、South、West、East和 Center。在使用这种布局管理器管理 组件的排列时,需要为组件指明放的 具体位置,默认位置为中间位置。如 果将组件位置放在North或South,组 件的宽度将延长至与容器一样宽,而 高度不变。如果将组件放在West或 East,组件的高度将延长至容器的高 度减去North和South之后的高度,而 宽度不变。
显示包含3个按钮的确认对话框,按钮分别为“是”、“否”和“撤 销”,该方法返回整型值0、1或2,根据返回值可分别编程执行相应 的操作。
目录
2. 中间容器
Swing的中间容器包含了一些可以被使用在许多不同 环境下的中间层容器,主要包括面板容器(JPanel类)、 分隔窗格(JSplitPane类)、带滚动条的窗格容器 (JScrollPane类)、工具栏(JToolBar类)等。它们 都是JComponent的子类,通常放在其他容器类中。这 里主要介绍用途广泛的面板容器。

java中textfield中清空内容的方法

java中textfield中清空内容的方法

一、介绍Java中TextField控件在Java编程中,TextField是一个常用的用户界面控件,用于接收用户输入的文本数据。

它通常用于表单、登录页面、搜索框等场景中,是与用户进行交互的重要组成部分。

二、TextField中清空内容的方法在实际的开发中,经常会遇到需要清空TextField中内容的情况,下面将介绍几种常用的方法。

1. 使用setText方法通过调用TextField的setText方法,可以将其内容设置为空字符串,从而实现清空的效果。

示例代码如下:```javatextField.setText("");```这样就可以清空textField中的内容。

2. 监听键盘事件另一种常见的做法是通过监听键盘事件,在用户按下特定键(如Delete键)时清空TextField中的内容。

示例代码如下:```javatextField.addKeyListener(new KeyAdapter() {Overridepublic void keyPressed(KeyEvent e) {if (e.getKeyCode() == KeyEvent.VK_DELETE) {textField.setText("");}}});```这样,当用户按下Delete键时,TextField中的内容就会被清空。

3. 使用DocumentListener还可以通过监听Document的变化,在用户输入内容后立即清空TextField中的内容。

示例代码如下:```javatextField.getDocument().addDocumentListener(new DocumentListener() {Overridepublic void removeUpdate(DocumentEvent e) {textField.setText("");}Overridepublic void insertUpdate(DocumentEvent e) {textField.setText("");}Overridepublic void changedUpdate(DocumentEvent e) {textField.setText("");}});```这样,无论用户是删除已有内容还是输入新内容,TextField中的内容都会被立即清空。

java 树组件事件

java  树组件事件
回true
isAddedPath(TreePath path)
如果path标识的路径被添加到选择中,则返回true
TreeSelectionListener接口中的方法如下所示:
valueChanged(TreeSelectionEvent e)
下面创建一个案例,来说明树组件事件的使用。代码如下所示。
java
单击树的叶子节点,可以触发TreeSelectionEvent树事件,即树中的节点可以发生选择事件。一个树可以使用addTreeSelectionListener方法为树添加一个监视器,处理事件的接口是TreeSelectionListener。树通过使用getLastSelectedPathComponent()方法获取选中的节点,使用getUserObject()方法得到与节点相关的信息。
node2.add(new DefaultMutableTreeNode("打印帮助"));
root.add(node2);
JTree tree = new JTree(root); //得到JTree的实例
DefaultTreeCellRenderer renderer = (DefaultTreeCellRenderer)tree.getCellRenderer();//得到JTree的Renderer
import java.awt.*;
import javax.swing.*;
import javax.swing.tree.*;
import javax.swing.event.*;
//森林状的关系图
public class JTreeDemo extends JFrame
{
JTextField jtfInfo; //文本域,用于显示点击的节点名称

java swing常用的9种组件

java swing常用的9种组件

在Java1.0中,已经有一个用于GUI编程的类库AWT(Abstract Window Toolkit),称之为抽象窗口工具箱。

遗憾的是,AWT中的组件(例如按钮,类名为Button)在实现中使用了本地代码(Native Code),这些组件的创建和行为是由应用程序所在平台上的本地GUI工具来处理的。

因此,AWT组件要在不同的平台上提供给用户一致的行为就受到了很大的限制。

同时,AWT组件中还存在很多bug,这就使得使用AWT来开发跨平台的GUI应用程序困难重重。

1996年,SUN公司和Netsacpe公司在一个称为Swing的项目中合作完善了Netsacpe公司原来开发的一套GUI库,也就是现在所谓的Swing组件。

Swing组件和原来的AWT组件完全不同,最大的区别就是Swing组件的实现中没有使用本地代码,这样对底层平台的依赖型就大为降低,并且可以给不同平台的用户一致的感觉。

此外,和原来的AWT相比,Swing 中提供了内容更多、使用更为方便的组件。

在阅读一些书籍时,常会遇到名词JFC(Java Foundation Class)。

JFC的概念是在1997年的JavaOne开发者大会上首次提出的,是指用于构建GUI的一组API。

实际上,Swing只是JFC的一部分,其它的还有二维图形(Java 2D)API以及拖放(Drag and Drop)API等等。

Swing并不是完全取代了AWT,Swing只是使用更好的GUI组件(如JButton)代替AWT 中相应的GUI组件(如Button),并且增加了一些AWT中原来所没有的GUI组件。

并且,Swing 仍使用AWT 1.1的事件处理模型。

虽然现在AWT组件仍得到支持,但是建议在你的应用程序中尽量使用Swing组件和1.1的事件模型。

1.标签(JLabel)标签(JLabel)通常是用来标识另外一个组件的含义。

以在标签上显示文字、图象或是文字图象的组合。

Java常用方法大全

Java常用方法大全

Java常用方法大全字符串1、获取字符串的长度length()2 、判断字符串的前缀或后缀与已知字符串是否相同前缀startsWith(String s)后缀endsWith(String s)3、比较两个字符串equals(String s)4、把字符串转化为相应的数值int型Integer.parseInt(字符串)long型Long.parseLong(字符串)float型Folat.valueOf(字符串).floatValue()double型Double.valueOf(字符串).doubleValue()4、将数值转化为字符串valueOf(数值)5、字符串检索indexOf(Srting s) 从头开始检索indexOf(String s ,int startpoint) 从startpoint处开始检索如果没有检索到,将返回-16、得到字符串的子字符串substring(int startpoint) 从startpoint处开始获取substring(int start,int end) 从start到end中间的字符7、替换字符串中的字符,去掉字符串前后空格replace(char old,char new) 用new替换oldtrim()8、分析字符串StringTokenizer(String s) 构造一个分析器,使用默认分隔字符(空格,换行,回车,Tab,进纸符)StringTokenizer(String s,String delim) delim是自己定义的分隔符nextToken() 逐个获取字符串中的语言符号boolean hasMoreTokens() 只要字符串还有语言符号将返回true,否则返回false countTokens() 得到一共有多少个语言符号文本框和文本区1、文本框TextField() 构造文本框,一个字符长TextField(int x) 构造文本框,x个字符长TextField(String s) 构造文本框,显示ssetText(String s) 设置文本为sgetText() 获取文本setEchoChar(char c) 设置显示字符为csetEditable(boolean) 设置文本框是否可以被修改addActionListener() 添加监视器removeActionListener() 移去监视器2、文本区TextArea() 构造文本区TextArea(String s) 构造文本区,显示sTextArea(String s,int x,int y) 构造文本区,x行,y列,显示s TextArea(int x,int y) 构造文本区,x行,y列TextArea(String s,int x,ing y,int scrollbar)scrollbar的值是:TextArea.SCROLLBARS_BOTHTextArea.SCROLLBARS_VERTICAL_ONL YTextArea.SCROLLBARS_HORIZONTAL_ONL Y TextArea.SCROLLBARS_NONEsetText(String s) 设置文本为sgetText() 获取文本addTextListener() 添加监视器removeTextListener() 移去监视器insert(String s,int x) 在x处插入文本sreplaceRange(String s,int x,int y) 用s替换从x到y处的文本append(String s) 在文本的最后追加文本sInt getCaretPosition(int n) 获取文本区中光标的位置按钮1、按钮Button() 构造按钮Button(String s) 构造按钮,标签是ssetLabel(String s) 设置按钮标签是sgetLabel() 获取按钮标签addActionListener() 添加监视器removeActionListener() 移去监视器标签1、标签Label() 构造标签Label(String s) 构造标签,显示sLabel(String s,int x)x是对齐方式,取值:Label.LEFTLabel.RIGHTLabel.CENTERsetText(String s) 设置文本sgetText() 获取文本setBackground(Color c) 设置标签背景颜色setForeground(Color c) 设置字体颜色选择框1、选择框Checkbox() 构造选择框Checkbox(String s) 构造选择框,给定标题sCheckbox(String s,boolean b) b设定初始状态Checkbox(String s,boolean b,CheckboxGroup g) g设定了所属的组(有了组就成为单选框)addItemListener() 添加监视器removeItemListener() 移去监视器getState() 返回选择框的是否选中状态setState(boolean b) 设置选择框的状态getLabel() 获取选择框的标题setLabel(String s) 设置选择框的标题为s选择控件和滚动列表1、选择控件Choice() 构造选择控件add(String s) 向选择控件增加一个选项addItemListener() 添加监视器removeItemListener() 移去监视器getSelectedIndex() 返回当前选项的索引getSelectedItem() 返回当前选项的字符串代表insert(String s,int n) 在n处插入选项sremove(int n)removeAll()2、滚动列表List() 构造滚动列表List(int n) 参数n是可见行数List(int n,boolean b) 参数b是设置是否可以多项选择add(String s) 向列表的结尾增加一个选项add(String s,int n) 在n处增加一个选项AddActionListener() 滚动列表添加监视器addItemListener() 滚动列表上的选项添加监视器remove(int n) 删除n初的选项remnoveAll() 删除全部选项getSelectedIndex() 返回当前选项的索引getSelectedItem() 返回当前选项的字符串代表3、组件类的一些常用方法void setBackground(Color c) 设置组件背景颜色void setForeground(Color c) 设置组件前景颜色void setFonts(Font f) 设置组件字体void setBounds(int x,int y,int w,int h) 设置坐标,x,y表示在容器中坐标,w,h表示宽和高void setLocation(int x,int y) 移动到x,y 处void setSize(int w,int h) 设置宽和高void setVisible(boolean b) 设置组建是否可见int getBounds().wigth 获取宽int getBounds().height 获取高int getBounds().x 获取x 坐标int getBounds().y 获取y 坐标Toolkit getToolkit() 获取工具包对void setEnabled(boolean b) 设置是否可以使用(默认可以)窗口和菜单1、窗口Frame() 构造窗口Frame(String s) 窗口标题是ssetBounds(int x,int y,int w,int h) 窗口位置x,y,宽w,高ysetSize(int w,int h) 设置窗口位置(单位是像素)setBackground(Color c) 设置背景颜色setVisible(boolean b) 设置窗口是否可见pack() 窗口出现时紧凑setTitle(String s) 设置标题为sgetTitle() 获取标题setResizable(boolean b) 设置窗口大小是否可以调整2、菜单条Menubar() 构造菜单条setMenubar() 窗口添加菜单条3、菜单Menu() 构造菜单Menu(String s) 构造菜单,标题saddadd(MenuItem item) 菜单增加菜单选项itemadd(String s) 向菜单增加选项sgetItem(int n) 获取n处的选项getItemCount() 获取选项数目insert(MenuItem item,int n) 在n处插入菜单选项iteminsert(String s,int n) 在n处插入菜单选项remove(int n) 删除菜单的n处的菜单选项removeAll() 删除全部4、菜单项MenuItem() 构造菜单项MenuItem(String s) 构造标题是s的菜单项setEnabled(boolean b) 设置是否可以被选择getLabel() 得到菜单选项名addActionListener() 添加监视器5、有关菜单的技巧addSeparator() 增加菜单分割线CheckboxMenuItem() 复选框菜单项setShortcut(MenuShortcut k) 设置快捷键(k取值KeyEvent.VK_A----KeyEvent.VK_Z)建立对话框1、Dialog类Dialog(Frame f,String s) 构造对话框,初始不可见,s是标题,f是对话框所依赖的窗口Dialog(Frame f,String s,boolean b) b设置初始是否可见getTitle() 获取对话框标题setTitle(String s) 设置对话框标题setModal(boolean b) 设置对话框模式setSize(int w,int h) 设置对话框大小setVisible(boolean b) 显示或隐藏对话框2、FileDialog类Filedialog(Frame f,String s,int mode) mode的值是fileDialog.LOAD或者fileDialog.SAVE public String getDirectory() 获取当前文件对话框中显示的文件所属目录public String getFile() 获取当前文件对话框中文件的字符串表示,不存在返回nullJava中的鼠标和键盘事件1、使用MouseListener借口处理鼠标事件鼠标事件有5种:按下鼠标键,释放鼠标键,点击鼠标键,鼠标进入和鼠标退出鼠标事件类型是MouseEvent,主要方法有:getX(),getY() 获取鼠标位置getModifiers() 获取鼠标左键或者右键getClickCount() 获取鼠标被点击的次数getSource() 获取鼠标发生的事件源事件源获得监视器的方法是addMouseListener(),移去监视器的方法是removeMouseListener() 处理事件源发生的时间的事件的接口是MouseListener 接口中有如下的方法mousePressed(MouseEvent) 负责处理鼠标按下事件mouseReleased(MouseEvent) 负责处理鼠标释放事件mouseEntered(MouseEvent) 负责处理鼠标进入容器事件mouseExited(MouseEvent) 负责处理鼠标离开事件mouseClicked(MouseEvent) 负责处理点击事件2、使用MouseMotionListener接口处理鼠标事件事件源发生的鼠标事件有2种:拖动鼠标和鼠标移动鼠标事件的类型是MouseEvent事件源获得监视器的方法是addMouseMotionListener()处理事件源发生的事件的接口是MouseMotionListener 接口中有如下的方法mouseDragged() 负责处理鼠标拖动事件mouseMoved() 负责处理鼠标移动事件3、控制鼠标的指针形状setCursor(Cursor.getPreddfinedCursor(Cursor.鼠标形状定义)) 鼠标形状定义见(书P 210)4、键盘事件键盘事件源使用addKeyListener 方法获得监视器键盘事件的接口是KeyListener 接口中有3个方法public void keyPressed(KeyEvent e) 按下键盘按键public void keyReleased(KeyEvent e) 释放键盘按键public void keyTypde(KeyEvent e) 按下又释放键盘按键Java多线程机制1、Java的线程类与Runnable接口Thread类public Thread() 创建线程对象public Thread(Runnable target) target 称为被创建线程的目标对象,负责实现Runnable接口线程优先级Thread类有三个有关线程优先级的静态常量:MIN_PRIORITY,MAX_PRIORITY,NORM_PRIORITY新建线程将继承创建它的副相承的优先级,用户可以调用Thread类的setPriority(int a)来修改a的取值:Thread.MIN_PRIORITY,Thread.MAX_PRIORITY,Thread.NORM_PRIORITY主要方法启动线程start()定义线程操作run()使线程休眠sleep()sleep(int millsecond) 以毫秒为单位的休眠时间sleep(int millsecond,int nanosecond) 以纳秒为单位的休眠时间currentThread() 判断谁在占用CPU的线程第二十章输入输出流1、FileInputStream类FileInputStream(String name) 使用给定的文件名name创建一个FileInputStream对象FileInputStream(File file) 使用File对象创建FileInpuStream对象File类有两个常用方法:File(String s) s确定文件名字File(String directory,String s) directory是文件目录例如:File f=new File("Myfile.dat");FileInputStream istream=new FileInputStream(f);处理I/O异常当出现I/O错误的时候,Java生成一个IOException(I/O异常)对象来表示这个错误的信号。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//当组合框选项是3时,设置标签图片
if(combo.getSelectedIndex()==2)
jl.setIcon(new ImageIcon("3.gif"));
//当组合框选项是4时,设置标签图片
if(combo.getSelectedIndex()==3)
jl.setIcon(new ImageIcon("4.gif"));
如果要在Swing实现选项事件,其事件处理者需要继承ItemListener接口。该接口中只有一个方法“itemStateChanged(ItemEvent e)”,该方法在用户已选定项或取消选定项某项时调用。
下面创建一个案例,来说明选项事件的使用。代码如下所示。
import javax.swing.*;
//当组合框选项是5时,设置标签图片
if(combo.getSelectedIndex()==4)
jl.setIcon(new ImageIcon("5.gif"));
}
}
public static void main(String args[])
{
new ItemEventShow();
}
}
在上述代码中,实现的功能是当你选择下拉列表框中的某张图片时,会响应单击事件,显示选中的图片。Mo类是响应选项事件的类,在该类中,通过combo对象的getSelectedIndex()方法进行判断,最后得出要显示的图片。执行上述代码,结果如图10-10所示。
jl=new JLabel();
//设置标签的布局方式
content.setLayout(new FlowLayout());
//为容器添加监听事件
combo.addItemListener(new Mo());
//向容器分别添加标签、组合框
content.add(jll);
content.add(combo);
{
//当组合框选项是1时,设置标签图片
if(combo.getSelectedIndex()==0)
jl.setIcon(new ImageIcon("1.gif"));
//当组合框选项是2时,设置标签图片
if(combo.getSelectedIndex()==1)
jl.setIcon(new ImageIcon("2.gif"));
ItemEvent类常用的方法如表10-2所示:
表10-2ItemEvent类常用方法
方法名称
功能描述
getItem()
返回受事件影响的项,即选中或取消的项
ItemSelectable getItemSelectable()
返回事件的产生程序
getStateChange()
返回状态更改的类型(已选定或已取消选定)
java.awt.*;
import java.awt.event.*;
class ItemEventShow extends JFrame
{
Container content;//添加容器
JComboBox combo;//创建组合框
JLabel jll,jl;//添加标签
public ItemEventShow()
content.add(jl);
//设置标题
setTitle("选项事件测试");
//设置大小
setSize(400,400);
//设置显示
setVisible(true);
}
class Mo implements ItemListener
{
public void itemStateChanged(ItemEvent e)
java
在Java GUI中,当进行选择性的操作时,如单击复选框或列表项时,或者当一个选择框或一个可选菜单的项被选择或取消时生成选项事件。选中或取消其中一项都会触发相应的选项事件。触发选项事件的组件比较多,如JComboBox、JCheckBox、JRadioButton组件。当用户在下拉列表、复选框和单选按钮中,选择一项或取消一项,都会触发所谓的选项事件ItemEvent,此时ItemEvent类将会自动创建一个事件对象。
图10-10选项事件
{
content=getContentPane();//初始化容器
//定义数组
String s[]={"南非豹","波斯猫","欧州牛","悠闲狗","非洲鹦鹉"};
//添加数组到组合框
combo=new JComboBox(s);
//初始化标签
jll=new JLabel("选择你喜欢的动物:");
相关文档
最新文档