java程序设计与案例_第1页
java程序设计与案例_第2页
java程序设计与案例_第3页
java程序设计与案例_第4页
java程序设计与案例_第5页
已阅读5页,还剩94页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

java程序设计与案例,刘彦军,第1章Java概述,1.1Java语言简介,Java语言:是一种面向对象的编程语言,语法与C语言类似。Java虚拟机:Java语言的运行环境(简称JVM)Java平台:是指Java类库的集合,第1章Java概述,1.2Java开发环境的设置,1、下载Windows版本的J2SESDK2、安装J2SESDK3、环境变量的设置a)添加环境变量JAVA_HOME变量值为jdk的实际安装路径b)修改环境变量PATH,添加%JAVA_HOME%bin,第1章Java概述,1.2Java开发环境的设置,c)添加环境变量CLASSPATH变量值为.;%JAVA_HOME%lib;%JAVA_HOME%libtools.jar;%JAVA_HOME%libdt.jar;,第2章Java语言基础,变量变量的命名规则:以字母开头和数字的序列。Java中变量名大小写敏感但长度不受限制。数据类型,第2章Java语言基础,运算符1、赋值运算符:=2、二元算数运算符:“+”、“-”、“*”、“/”、“%”3、一元运算符:“+”(正号)、“-”(负号)、“+”、“-”4、关系运算符:“”、“=”、“”、“=”、“=”、“!=”5、逻辑运算符6、位运算符流程控制1、if-else条件分支控制2、switch条件分支控制,第2章Java语言基础,3、while循环4、do-while循环5、for循环流程控制中的跳转:continue、break和return读取输入1、Scannerin=newScanner(System.in)2、读取一行:Strings=in.nextLine()3、读取单个单词:Strings=in.next()4、读取整数:intsum=in.nextInt()5、读取浮点数:doublesum=in.nextDouble(),数组1、一维数组:typearrayName=newtypearraySizetypearrayName=newtypearraySizearrayName.length指明数组的长度2、多维数组,第2章Java语言基础,第3章类与对象,面向对象一、传统开发方法存在问题1、软件重用性差2、软件可维护性差3、开发出的软件不能满足用户需要二、面向对象的基本概念1、对象:对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。2、对象的状态和行为,第3章类与对象,3、类:具有相同或相似性质的对象的抽象就是类。类具有属性,它是对象的状态的抽象用数据结构来描述类的属性。类具有操作,它是对象的行为的抽象用操作名和实现该操作的方法来描述。4、消息和方法:对象之间进行通信的结构叫做消息。在对象的操作中,当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的信息。发送一条消息至少要包括说明接受消息的对象名、发送给该对象的消息名(即对象名、方法名)。一般还要对参数加以说明,参数可以是认识该消息的对象所知道的变量名,或者是所有对象都知道的全局变量名。5、封装6、继承7、接口,第3章类与对象,第3章类与对象,三、面向对象的特征1、对象唯一性2、分类性:分类性是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。3、继承性4、多态性:多态性是指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。,第3章类与对象,一、类的定义1、语法格式:访问控制符classclassname访问控制符数据类型域名;.访问控制符返回类型方法名(参数列表).说明:1、域定义了类的静态属性又称为成员变量2、方法定义了类的动态属性又称为成员函数3、返回类型必须指定(构造函数除外),如无返回值用void,第3章类与对象,2、构造方法与对象的创建构造方法用来完成通过类创建对象所需的初始化工作。对象的创建:类名对象名=new构造方法名(参数列表)3、对象的使用对象在创建后,可以通过变量名访问这个类的实例。通过.运算符来访问变量所知对象的域和方法。,第3章类与对象,例:classstudentprivateStringname;privateintstuID;privatedoublescore;publicstudent(StringaName,intaStuID,doubleaScore)name=aName;stuID=aStuId;score=aScore;protectedvoidsetScore(doublec)score=c;,二、说明1、对象的创建,第3章类与对象,2、默认构造函数所谓默认构造函数是指没有参数的构造函数。如果编写类时没有提供构造函数,系统会提供默认构造函数。若类至少提供了一个构造函数,但没有提供默认构造函数则在创建对象时若不提供构造参数被认为不合法。3、构造函数的重载所谓重载是指如果多个方法具有相同的方法名、不同的参数便产生了重载。4、隐式参数和显示参数,第3章类与对象,protectedvoidsetScore(doublec)score=c;studentaa=newstudent(“liwei”,200510139,85);aa.setScore(75);事实上这个调用执行了以下指令:aa.score=75;在每个方法中关键字this用来表示隐式参数5、调用另一个构造函数student(Stringname,intid);student(intid)this(“aa”,id);,第3章类与对象,第3章类与对象,6、构造函数构造函数与类同名。构造函数没有返回类型。一个类可以有一个以上的构造函数。构造函数可以有0个、1个或1个以上的参数。构造函数总是伴随new操作符使用。构造函数可以互相调用。三、包(package)1、类的导入java.util.Datedate=newjava.util.Date()import包名例:importjava.until.*;,Datedate=newdate();importjava.util.*;importjava.sql.Date;Datedate=newDate();此时Date类为java.sql包中的Date类java.util.Datedate=newjava.util.Date();java.sql.Datetodate=newjava.sql.Date();2、将类放入包中package包名此语句应放置在源文件的开头类定义的代码之前,如果源文件中没有定义包名,则程序被放置到一个默认的没有包名的包中。,第3章类与对象,四、java修饰符1、类的修饰符public公共类修饰符protectedprivateabstract抽象类修饰符final最终类修饰符默认访问控制可以被同一个包中的类访问,第3章类与对象,2、成员变量的修饰符公共访问控制符:public私有访问控制符:private保护访问控制符:protected私有保护访问控制符:privateprotected静态域修饰符:static最终域修饰符:final,第3章类与对象,3、成员函数的修饰符公共访问控制符:public私有访问控制符:private保护访问控制符:protected私有保护访问控制符:privateprotected抽象方法控制符:abstract静态方法控制符:static,第3章类与对象,最终方法控制符:final本地方法控制符:native同步方法控制符:synchronized五、静态域与静态方法1、静态域如果将域定义为静态的,则每一个类中只有一个这样的域2、静态方法,第3章类与对象,第3章类与对象,六、继承1、概念与语法继承是一种由已有的类创建新类的机制,是存在于面向对象程序中的两个类之间的一种关系,目标是为一个已有的类的属性或操作进行扩展或修正。a)被继承的类一般称为父类b)继承得到的类称为子类或者派生类c)子类除了可以直接继承父类非私有的属性和方法外,还可以重载父类中定义的操作,以及添加新的属性和方法。,第3章类与对象,d)语法格式:子类名extends父类名.2、隐藏和覆盖a)域的隐藏:子类中定义了与从父类那里继承的成员变量完全相同的变量b)访问被隐藏的父类的变量(1)调用父类的方法(2)使用super.变量名c)方法的覆盖:子类中定义了与父类具有完全相同的方法名、完全相同的参数列表、完全相同类型的返回值。3、构造方法的继承,第3章类与对象,七、非访问控制符非访问控制符用于说明成员性质的控制符:static、final和Abstract1、finalfinal用来修饰一个不可再次更改的定义如:a)如果修饰类的定义,则这个类不能被继承。b)如果修饰成员函数,则这个方法不能在子类中被隐藏。c)如果修饰成员变量,则这个变量只能也必须被赋值一次。,第3章类与对象,2、abstractabstract可以用来修饰类或方法且:a)如果修饰类则这个类被称为抽象类,类中定义的方法可以没有方法体而只有方法的申明。b)如果修饰方法,则这个方法在非抽象的子类中必须有具体的实现。,八、抽象类抽象类是没有具体对象的概念类,由abstract修饰符来修饰。抽象类的定义:访问控制符abstractclass类名extends父类名成员变量.成员函数.,第3章类与对象,说明:1、成员函数可以是抽象方法或普通成员函数2、抽象类的子类如不是抽象类,则它必须为父类中的所有抽象方法书写方法体3、抽象类不能用来创建对象,抽象类必须派生出子类。4、抽象类中不一定有抽象方法,但包含抽象方法的类一定为抽象类。5、抽象类中构造方法、static方法与private方法前不能使用abstract修饰。,第3章类与对象,九、接口1、定义:接口用来定义一组抽象操作的集合,通常是一些抽象方法和域的定义。2、特点:a)接口不包含方法的任何实现,接口中的方法都是抽象方法。b)接口定义的方法和域都是具备public访问权限的,不容许使用protected和private进行修饰。,第3章类与对象,第3章类与对象,c)接口不容许定义一般的成员变量。d)接口不能直接用来创建对象。3、语法格式:publicinterface接口名extends父接口列表publicstaticfinal域类型域名=常量值;publicabstract返回值类型方法名(参数列表);,第3章类与对象,4、说明a)用implements关键字在类的声明部分声明该类将实现的接口b)一个类可以同时实现多个接口。c)一个类实现接口时类中应实现接口的所有方法。d)对接口中方法的实现必须显示的使用public修饰符。e)对接口方法的实现,类中对应的方法的方法名、返回值和方法的参数列表形式必须一致,否则视为方法的重载。,十、多态is-a关系的另一种表述法是置换法则,它表明程序中出现超类对象的任何地方都可以用子类对象置换。在Java程序设计语言中对象变量是多态的。如:父类为A子类为B有如下定义Atemp=newA();Atemp1=newB()1、动态绑定2、静态绑定,第3章类与对象,十一、内部类与匿名类内部类是指定义在另一个类中的类。使用原因如下:a)内部类方法可以访问该类定义所在的作用域的所有数据内部类可以对同一包中的其他类隐藏1、内部类的定义2、局部内部类的定义3、匿名类的定义,第3章类与对象,第6章基础类库和工具类库,十二、Object1、getClass():获取当前类的信息,返回值是java.lang.class类的对象2、hashCode():返回对象的哈希码3、equal():用来比较两个对象是否相等4、clone():返回当前对象的一个拷贝5、toString():将当前对象的信息用字符串进行描述6、finalize():定义回收当前对象时所需完成的工作,第3章类与对象,十三、访问控制符,第5章异常处理,一、异常处理机制1、异常分类,Throwable,Error,Exception,Exception,Exception,IOException,RuntimeException,1、异常的捕获:try语句;catch(异常类名1抛出的异常对象名)异常处理代码catch(异常类名2抛出的异常对象名)异常处理代码finallyfinally语句;,第5章异常处理,第5章异常处理,2、finallyfinally是整个异常处理的统一的出口。即使在try语句或catch语句中有return等控制流程的语句,finally语句仍然会被执行。3、异常抛出throw异常的实例4、自定义异常类,第6章基础类库和工具类库,一、基础类库1、Java.lang2、java.io3、java.util4、java.awtjava.swing5、java.applet6、7、java.awt.event8、java.sql,第6章基础类库和工具类库,二、基本数据类型的封装,第6章基础类库和工具类库,三、Mathjava.lang.Math类用来完成一些常用的数学计算,类中的方法均为静态方法,使用时不需要创建实例直接调用即可。1、主要属性:publicfinalstaticdoubleE:数学常量ePublicfinallystaticdoublePI:圆周率常量2、主要方法:publicstaticinabs(inti):绝对值publicstaticdoublesin(doublea):正弦publicstaticdoublerandom():产生0-1之间的伪随机数publicstaticdoublemax(doublea,doubleb):最大值,第6章基础类库和工具类库,五、字符串相关类1、String构造方法:String()、String(Stringa)、String(charchars)主要成员方法:intlength():返回字符串长度charcharAt(intindex):返回指定位置的字符intcompareTo(Strings2):按字母顺序进行字符串比较booleanequals(objectobj):判断字符串是否相同(区分大小写)stringsubstring(intbeginIndex):取字串intindexOf(Stringstr):返回str在当前串中开始位置,第6章基础类库和工具类库,2、StringBuffer1、构造方法:StringBuffer():创建一个空的StringBuffer对象StringBuffer(intlength):设置初始容量StringBuffer(Strings):利用已有字符串创建StringBuffer对象2、主要方法:append(charc):在字符串的最后追加一个字符insert(intindex,StringsubString):在字符串index处插入字串voidsetCharAt(intindex,charc):替换指定位置的字符StringtoString():将可变串变为不可变串,第6章基础类库和工具类库,3、StringTokenizerjava.util.StringTokenizer提供了对字符串的解析和分割的功能六、集合API集合中最基本的接口为Collection,该接口中定义了聚集形式数据的基本操作方法主要有:publicbooleanadd(Objectobj):加入一个元素pubicbooleanaddAll(Collection):将另外一个集合的元素全部加入publicvoidclear():清除所有的元素publicbooleancontans(Objectobj):判断是否包还objpublicbooleanremove(Objectobj):删除元素objpublicIteratoriterator():得到迭代器,第6章基础类库和工具类库,publicintsize():集合中元素的总数publicisEmpty():判断集合是否为空publicObjecttoArray():转化成对象数组Collection接口有两个直接扩展接口:List:记录元素保存顺序,允许有重复元素存在实现List接口的类主要有:ArrayList和VectorSet:不记录元素保存顺序,不允许元素重复存在.实现Set接口的类主要有:AbstractSet、HashSet、LinkedHashSet和SorteSetIterator:主要用来遍历集合中的元素,主要方法有:publicbooleanhasNext():判断是否还有下一个元素publicObjectnext():得到下一个元素publicvoidremove():从集合中删除当前元素ListIterator为Iterator的子接口,它是针对List提供双向检索和元素存取功能,第6章基础类库和工具类库,七、日期和时间java.util.Date类提供了操作时间的基本功能1、构造函数:Date():构造一个记录当前系统时间的Date实例Date(longdate):构造一个指定时间的Date实例2、主要方法:Booleanafter(Date):比较所包含的日期是否迟于参数指定日期Booleanbefor(Date):比较所包含的日期是否先于参数指定日期LonggetTime():返回时间间隔(1970年1月1日0时起)VoidsetTime():设置新的时间,第9章图形用户界面,一、概述1、图形用户界面(GraphicsUserInterface)简称GUI2、抽象窗口工具包AWT(AbstractWindowsToolkit)3、Java基础类(JavaFoundationClassesJFC)Swing组件二、创建框架顶层窗口被称为框架(frame),在AWT中类Frame用于描述顶层窗口在Swing中为类JFrame扩展于Frame类。1、主要方法VoidsetResizable(booleanb)决定用户是否可重置框架的大小VoidsetTitle(Stringa)设置框架标题栏中的文字设置为字符串aVoidsetVisible(booleanb)设置框架是否可见,第9章图形用户界面,d)VoidsetEnabled(booleanb)激活或禁用组件f)VoidsetLoacation(intx,inty)设置框架的显示位置x,y为坐标2、Toolkit类staticToolkitgetDefaultToolkit()返回默认的工具箱DimensiongetScreenSize()返回用户屏幕的尺寸三、标签(JLabel)标签的功能是显示单行的字符串1、标签的创建JLabellab=newJLabel()创建一个标题为空字符串的标签JLabellab=newJLabel(Strings);创建标题为字符串s的标签JLabellab=newJLabel(Strings,intalignment)创建显示字符串为s同时label的对齐方式label的对齐方式有三种:LEFTCENTER和RIGHT,第9章图形用户界面,2、标签的使用及主要方法this.add(lab)将标签添加到父容器中publicvoidsetText(Strings)设置显示的字符串publicStringgetText()返回当前显示的字符串四、文本域(JTextField)1、构造方法JTextField():构造一个空的文本域JTextField(Strings):构造一个用指定文本初始化的新TextFieldJTextField(Strings,intcolumn):构造一个用指定文本和列初始化的新TextField2、主要方法setText(Strings):设置文本域显示的字符getText():返回文本域中的字符串,第9章图形用户界面,3、文本域变化跟踪当文本域的内容发生变化时可以要求文档给出通告,这要求添加文档监听器(DocumentListener)当文本域的内容发生变化时DocumentListener当中的两个方法之一会被调用:VoidinsertUpdate(DocumentEvente)VoidremoveUpdate(DocumentEvente)五、密码域(JPasswordField)1、构造方法:JPasswordField(Strings,intcolumn)2、主要方法:a)voidsetEchoChar(charecho)为密码域设置回显字符。0表示重置为默认的回显字符。chargetPassword()获取密码域的内容,第9章图形用户界面,七、按钮(JButton)JButton是AbstractButton的子类1、构造方法JButton():创建一个不带有设置文本或图标的按钮JButton(Strings):创建一个带文本的按钮JButton(Iconicon):创建一个带图标的按钮JButton(Strings,Iconicon)2、主要方法StringgetText():获取按钮的标签VoidsetText(Strings):设置按钮的标签VoidaddActionListener(ActionListenere):注册事件监听器VoidremoveActionListener(ActionListenree):注销事件监听器,第9章图形用户界面,VoidsetDisableIcon(Icondi):设置当按钮禁用是显示的图标VoidsetPressedIcon(Iconpi):设置当按钮按下时显示的图标VoidsetSelectedIcon(Iconsi):设置当按钮被选则时显示的图标VoidsetRolloverIcon(Iconri):设置鼠标移动到按钮上时显示的图标2、事件监听器需实现事件接口ActionListenerpublicvoidactionPerformed(ActionEvente)事件监听器的添加(两种方法),第9章图形用户界面,例1:JButtonjb=newJButton(“确定”);jb.addActionListener(newActionListener(ActionEvente)publicvoidactionPerformed(ActionEvente)/要执行的操作.);,第9章图形用户界面,例2:JButtonjb=newJButton(“确定”);buttonListenerbl=newbuttonListener()jb.addActionListener(bl);classbuttonListenerimplementsActionListener/域的定义/方法的定义publicvoidactionPerformed(ActionEvente)/事件发生时所进行的操作.,第9章图形用户界面,六、布局管理器1、FlowLayouta)FlowLayout是Panel、Applet默认的布局管理器。组件的排列从容器的左上角开始从左向右、从上到下依次排列。组件之间默认的间距为5个像素点。(2)构造方法FlowLayout()FlowLayout(inthow):参数how用来设置组件的对齐方式FlowLayout(inthow,inthorz,intvert):参数how:设置组件的对齐方式参数horz:设置组件间的水平间距参数vert:设置组件间的垂直间距,第9章图形用户界面,参数how的值如下:FlowLayout.LEFT:左对齐,水平和垂直间距为5个像素点FlowLayout.CENTER:居中对齐,水平和垂直间距为5个像素点FlowLayout.RIGHT:右对齐,水平和垂直间距为5个像素点设置容器布局管理器的方法:setLayout(LayoutManagerm)2、BorderLayoutBorderLayout是Window、Frame、Dialog默认的布局管理器将容器划分为东、南、西、北、中5个区域构造方法:BorderLayout():生成默认布局管理器组件间横纵间距为0BorderLayout(inthorz,intvert),第9章图形用户界面,添加组件的方法:add(Componentobj,Objectregion)obj:要添加的组件region:组件添加的位置,分别对应BorderLayout的5个常量BorderLayout.CENTER:中心区BorderLayout.SOUTH:南BorderLayout.EAST:东BorderLayout.WEST:西BorderLayout.NORTH:北3、GridLayoutGridLayout在一个二维网格中布置组件构造方法:,第9章图形用户界面,GridLayout(introw,intcolumn):生成指定行列的布局管理器GridLayout(introw,intcolumn,inthorz,intvert)3、CardLayout(卡片布局)构造方法:CardLayout()主要方法:Voidfirst(Containerdeck):显示第一张卡片Voidlast(Containerdeck):显示最后一张卡片Voidnext(Containerdeck):显示下一张卡片Voidprevious(Containerdeck):显示前一张卡片Voidshow(Containerdeck,StringcardName):显示指定名称的卡片,第9章图形用户界面,六、文本区(JTextArea)1、构造函数:JTextArea(introws,intcolumn)构造一个新的文本区参数:rows:行数column:列数JTextArea(Stringtext,introws,intcolumn)使用初始文本构造一个新文本区参数:text:初始文本rows:行数column:列数2、主要方法Voidappend(Strings):将给定的文本s添加到文本区原有文本的末尾VoidsetLineWrap(booleanwrap):打开或关闭换行voidsetWrapStyleWord(booleanword):设置换行方式参数:word如果设置为true则当行的长度大于所分配的宽度时将在单词边界(空白)处换行。如果设置为false,则将在字符边界处换行,第9章图形用户界面,八、复选框(JCheckBox)1、构造方法:JCheckBox(Strings):用给定的标签初始化一复选框初始状态为未选JCheckBox(Strings,booleanstate):用给定的标签和初始状态创建一复选框2、主要方法BooleanisSelected():返回复选框状态如:JCheckBoxjcb=newJCheckBox(“aa”,true);jcb.isSelected()VoidsetSelected(booleanstate):设置复选框的状态如:JCheckBoxjcb=newJCheckBox(“aa”);jcb.setSelected(false);jcb.isSelected(),第9章图形用户界面,3、事件监听器需实现事件接口ActionListenerpublicvoidactionPerformed(ActionEvente)九、单选按钮(JRadioButton)1、构造方法JRadioButton(Stringlable,booleanstate)用给定的标签和初始状态构造一个单选按钮如:JRadioButtonjrb=newJRadioButton(“aaa”,true);2、单选按钮组(ButtonGroup)ButtonGroupbg=newButtonGroup();JRadioButtonjrb=newJRadioButton(“aaa”,true);bg.add(jrb);,第9章图形用户界面,JRadioButtonjrb1=newJRadioButton(“bbb”,false);bg.add(jrb1);3、事件监听器需实现事件接口ActionListenerpublicvoidactionPerformed(ActionEvente)十、滑块(JSlider)构造方法:publicJSlider(intorientation,intmin,intmax,intvalue)用指定的方向和指定的最小值、最大值以及初始值创建一个滑块。方向可以是SwingConstants.VERTICAL或SwingConstants.HORIZONTAL。主要方法:,第9章图形用户界面,a)setPaintTicks(booleanb):如果b为true显示标尺setMajorTickSpacing(intn):设置大标尺setMinorTickSpacing(intn):设置小标尺setPaintLabels(booleanb):如果b为true显示标尺标签setLabelTable(Dictionarylabels):设置标尺标签的组件setSnapToTicks(booleanb):如果b为true,每次调整时对齐到最近的标尺处十一、菜单1、菜单的创建创建菜单栏JMenuBarmb=newJMenuBar();添加菜单栏frame.setJMenuBar(mb);,第9章图形用户界面,添加顶层菜单项JMenumenu=newJMenu(“menuName”);mb.add(menu);添加子菜单项JMenuItemmit=newJMenuItem(“menuItemName”);menu.add(mit);添加分隔行menu.addSeparator()为每个子菜单添加动作监听器mit.addActionListener(ActionListenerl)2、复选框菜单项与单选按钮菜单项创建复选框菜单项JCheckBoxMenuItemcbm=newJCheckBoxMenuItem(“ItemName”),第9章图形用户界面,复选框菜单项的添加menu.add(cbm)单选按钮菜单项的创建ButtonGroupbg=newButtonGroutp();JRadioButtonMenuItemrbm=newJRadioButtonMenuItem(“name”)JRadioButtonMenuItemrbm1=newJRadioButtonMenuItem(“name”)bg.add(rbm);bg.add(rbm1);单选按钮菜单项的添加menu.add(rbm);menu.add(rbm1);3、弹出菜单,第9章图形用户界面,弹出菜单的创建JPopupMenupm=newJPopupMenu();向弹出菜单中添加子菜单JMenuItemcat=newJMenuItem(“cat”);JMenuItemcopy=newJMenuItem(“copy”);pm.add(copy);pm.add(cat);弹出菜单的显示pm.show(panel,x,y)其中panel为显示弹出菜单的父容器,x,y分别为显示的坐标弹出菜单中的个子菜单也可添加动作监听器如:copy.addActionListener(ActionListenerl);,第9章图形用户界面,4、菜单项的禁用与启用setEnabled(booleana)当参数为true时启用,当为false时禁用十二、工具栏1、工具栏的创建publicJToolBar(Stringname,intorientation)参数:name-工具栏的名称orientation-初始方向,它不是HORIZONTAL就是VERTICAL2、工具栏添加组件toolBar.add(c)3、设置工具提示setToolTipText(StringtipText)设置显示工具提示时要显示的文本,第9章图形用户界面,十一、文件对话框(JFileChooser)1、建立文件对话框并获得用户选择的步骤创建一个JFileChooser对象如:JFileChooserch=newJFileChooser()调用setCurrentDirectory设置默认目录如:ch.setCurrentDirectory(newFile(.);如果有一个希望用户选择的默认文件类型名,则调用setSelectedFile方法设置如:ch.setSelectedFile(newFile(“.xls”)如果允许用户选择多个文件则调用setMultiSelectionEnabled方法设置如:ch.setMultiSelectionEnabled(true),第9章图形用户界面,如果需要对话框中只显示某一种类型文件则需设置文件过滤器setFileSelectionMode(intmode)参数值为:JFileChooser.FILES_ONLY(默认值)JFileChooser.DIRECTORIECS_ONLYJFileChooser.FILES_AND_DIRECTORIECS调用showOpenDialog或showSaveDialog显示对话框,需为其提供父组件如:intresult=ch.showOpenDialog(parent)intresult=ch.showSaveDialog(parent),第9章图形用户界面,返回值为:JFileChooser.APPROVE_OPTIONJFileChooser.CANCEL_OPTIONJFileChooser.ERROR_OPTIONgetSelectedFile或getSelectedFiles获取用户选择的一个或多个文件,如需文件对象名时调用getPath()如:Stringfilename=ch.getSelectedFile().getPath()2、文件过滤器(Filefilter)实现Filefilter类中的两个主要方法publicbooleanaccept(Filef)publicStringgetDescription()第一个方法测试是否应该接受某个文件,第二个方法返回显示在文件选择器对话框中文件类型的信息例如如果只选择xls文件可用如下代码:,第9章图形用户界面,classExcellFileFilterextendsFileFilterpublicbooleanaccept(Filef)returnf.getName().toLowerCase().endsWith(.xls)|f.isDirectory();publicStringgetDescription()returnxlsfile;,第9章图形用户界面,十二、选项卡面板(JTabbedPane)1、选项卡面板的创建过程a)构建一JTabbedPane对象JTabbedPanetp=newJTabbedPane();向JTabbedPane中添加选项卡tp.addTab(title,icon,component)publicvoidaddTab(Stringtitle,Iconicon,Componentcomponent)添加一个由title和/或icon表示的component,其任意一个都可以为null。参数:title-此选项卡中要显示的标题icon-此选项卡中要显示的图标component-单击此选项卡时要显示的组件,第9章图形用户界面,c)使用setSelectedIndex设置新选项卡显示tp.setSelectedIndex(tp.getTabCount()-1);移除选项卡removeTabAt(intindex)tp.removeTabAt(tp.getTabCount()-1);删除最后一个选项卡,第9章图形用户界面,1、表格模型AbstractTableMode类三个主要方法publicintgetRowCount()获取表格的总行数publicintgetColumnCount()获取表格的总列数publicObjectgetValueAt(introw,intcolumn)获取对应行列上的元素值d)publicStringgetColumnName(intcolumn)获取列的名称,第9章图形用户界面,例:实现一30行10列的表格模型,其中对应表格元素为行数与列数的积publicclassTestTableModelextendsAbstractTableModelpublicintgetRowCount()return30;pubicintgetColumnCount()return10;publicintgetValueAt(introw,intcolumn)returnrow*column;,第9章图形用户界面,2、创建表格创建了表格模型后利用表格模型创建表格,并将表格添加到JScrollPane中来添加滚动条TableModeltam=newTestTableModel();JTabletab=newJTable(tam);JScrollPanejp=newJScrollPane()jp.add(tab);,第9章图形用户界面,十二、事件处理1、鼠标事件接口(MouseListener、MouseMotionListener)MouseListener的五个主要方法voidmouseClicked(MouseEvente):鼠标按键在组件上单击(按下并释放)时调用。voidmousePressed(MouseEvente):鼠标按键在组件上按下时调用。voidmouseReleased(MouseEvente):鼠标按钮在组件上释放时调用。,第9章图形用户界面,voidmouseEntered(MouseEvente)鼠标进入到组件上时调用。voidmouseExited(MouseEvente)鼠标离开组件时调用。MouseMotionListener接口的主要方法voidmouseDragged(MouseEvente)鼠标按键在组件上按下并拖动时调用。在释放鼠标按键前voidmouseMoved(MouseEvente)鼠标光标移动到组件上但无按键按下时调用。,第9章图形用户界面,MouseEvent(鼠标事件)publicintgetClickCount()返回与此事件关联的鼠标单击次数publicintgetX()返回事件相对于源组件的水平x坐标publicintgetY()返回事件相对于源组件的垂直y坐标2、键盘事件接口(KeyListener)键盘事件接口的主要方法voidkeyTyped(KeyEvente):键入某个键时调用此方法,第9章图形用户界面,voidkeyPressed(KeyEvente):按下某个键时调用此方法voidkeyReleased(KeyEvente):释放某个键时调用此方法键盘事件(KeyEvent)publicchargetKeyChar()返回与此事件中的键关联的字符3、事件适配器(Adapter)十三、树(JTree)1、构造方法JTee(HashTableht):散列表ht的每个元素为树的一个节点JTree(Objectobj):对象数组obj中的每个元素为树的节点JTree(TreeNodetn):树节点tn为树的根结点JTree(Vectorv):向量v中的元素为树的节点,第9章图形用户界面,2、使用树节点构造树的过程(DefaultMutableTreeNode)创建根结点rootroot=DefaultMutableTreeNode(“rootname”);向根结点添加子节点childNode=newDefaultMutableTreeNode(“childname”);root.add(childNode);可向子节点添加二级节点treeNode=newDefaultMutableTreeNode(“nodename”);childNode.add(treeNode);利用根结点构造树JTreetree=newJTree(root);,第9章图形用户界面,将树构件添加到滚动窗格中JScrollPanejsp=newJScrollPane(tree);3、鼠标选择时获取树节点路径为树构件添加鼠标事件tree.addMouseListener(MouseListeneri);重写mouseClicked()方法publicvoidMouseClicked(MouseEvente)TreePathtp=tree.getPathForLocation(e.getx(),e.getY(),第七章Java输入输出系统,一、流基于字节的输入输出流InputStream、OutputStream,基于Unicode的输入输出流Reader、Writer1、InputStreamInputStream是一个抽象类是所有数据形式为字节的输入流的父类。主要方法有:Publicabstractintread()throwsIOException从输入流中读取一个字节的数据,如果读到输入流的末端返回-1Pubilcintread(byteb,intoff,intlen)throwsIOExceptionPubilcintread(byteb)throwsIOExceptionPubliclongskip(longn)throwsIOException略过输入流中长度为n的数据e)Publicintavailable()throwsIOException返回输入流中还能读到的数据长度,第七章Java输入输出系统,Publicvoidclose()throwsIOException关闭当前的输入流Publicvoidmark()throwsIOException给当前输入流设置标记Publicvoidreset()throwsIOException返回到mark()方法标记的状态PublicbooleanmardSupported()判断使用的流是否支持reset/mark操作2、OutputStream是所有字节形式输出流的父类主要方法有:Publicabstractvoidwrite(intb)throwsIOException将b写入到输出流中,第七章Java输入输出系统,Publicvoidflush()throwsIOException将缓存中的数据立即写入到输出流中Publicvoidclose()throwsIOException关闭输出流3、Reader4、Writer二、标准输入输出1、标准输入(System.in)使用in.read()方法返回用户键盘输入信息三、文件访问(File)1、构造方法及主要方法:构造方法:File(StringpathName)通过将给定路径名字符串转换为抽象路径名来创建一个新File实例。,第七章Java输入输出系统,四、文件读写1、基于字节方式的读文件(FileInputStream)publicFileInputStream(Filefile)throwsFileNotFoundE

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论