java 怎么判断一个类是不是继承了某接口
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 怎么判断一个类是不是继承了某接口相关的知识,希望对你有一定的参考价值。
Class中有个方法 public native boolean isAssignableFrom(Class<?> cls)用来判断子类是否继承于父类的或者父接口的。
你会这样子写:
Class clazz = ....;
clazz.isAssignableFrom(子类名称);返回true说明是挂号里的类的父类或父接口。
clazz.isAssignableFrom(子类名称)里的子类名称跟版本有关,好像是1.5以上的JDK这里的子类名称都是使用的泛型编程。即传的传数是
class<T> 类型的,你用的时候自己斟酌下版本问题。
而常用的instanceof(class ..)是指该实例是否属于挂号中的类的父类的一个实例。
如上面的例子:
class A
public class B extends A
public static void main(String[] args)
Class clazz = B.class;
Class class1 = A.class;
System.out.println(class1.isAssignableFrom(clazz));
if(class1.isAssignableFrom(clazz))
System.out.println("A是B的父类");
else
System.out.println("A不是B的父类");
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程[1] 。
Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点[2] 。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等[3] 。
JDK(Java Development Kit)称为Java开发包或Java开发工具,是一个编写Java的Applet小程序和应用程序的程序开发环境。JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一些Java工具和Java的核心类库(Java API)。不论什么Java应用服务器实质都是内置了某个版本的JDK。主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如,IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK[13] 。
另外,可以把Java API类库中的Java SE API子集和Java虚拟机这两部分统称为JRE(JAVA Runtime Environment),JRE是支持Java程序运行的标准环境[14] 。
JRE是个运行环境,JDK是个开发环境。因此写Java程序的时候需要JDK,而运行Java程序的时候就需要JRE。而JDK里面已经包含了JRE,因此只要安装了JDK,就可以编辑Java程序,也可以正常运行Java程序。但由于JDK包含了许多与运行无关的内容,占用的空间较大,因此运行普通的Java程序无须安装JDK,而只需要安装JRE即可[15] 。
参考技术A Class中有个方法 public native boolean isAssignableFrom(Class<?> cls)用来判断子类是否继承于父类的或者父接口的。你会这样子写:
Class clazz = ....;
clazz.isAssignableFrom(子类名称);返回true说明是挂号里的类的父类或父接口。
clazz.isAssignableFrom(子类名称)里的子类名称跟版本有关,好像是1.5以上的JDK这里的子类名称都是使用的泛型编程。即传的传数是
class<T> 类型的,你用的时候自己斟酌下版本问题。
而常用的instanceof(class ..)是指该实例是否属于挂号中的类的父类的一个实例。
如上面的例子:
class A
public class B extends A
public static void main(String[] args)
Class clazz = B.class;
Class class1 = A.class;
System.out.println(class1.isAssignableFrom(clazz));
if(class1.isAssignableFrom(clazz))
System.out.println("A是B的父类");
else
System.out.println("A不是B的父类");本回答被提问者采纳 参考技术B 看该类类名后面有没有implements接口
课程总结
课程总结
instanceof关键字
在java中可以使用instanceof关键字判断一个对象到底是不是哪个类的实例
对象instanceof类→返回boolean类型
接口
接口是java中最重要的概念,接口可以理解为一种特殊的类,由全局变量和公共的抽象方法所组成。
实现接口
接口要使用也必须通过子类,子类通过implements关键字实现接口
继承抽象类实现接口
一个子类可以同时继承抽象类和实现接口
格式
class 子类 extends 抽象类 implements 接口A,接口B.....{}
接口和抽象类的使用限制
· 允许一个抽象类实现多个接口
· 一个接口是不允许继承抽象类的
· 允许一个接口继承多个接口
· 一个接口不能继承一个抽象类,但是可以通过extends关键字同时继承多个接口,实现接口的多继承。
interface 子接口 extends 父接口A,父接口B,.....{}
抽象类与接口的区别
区别点 | 抽象类 | 接口 |
---|---|---|
定义 | 包含一个抽象方法的类 | 抽象方法和全局变量的集合 |
组成 | 构造方法,抽象方法,普通方法,常量,变量 | 常量,抽象方法 |
使用 | 子类继承抽象类 | 子类实现接口 |
关系 | 抽象类可以实现多个接口 | 接口不能继续抽象类,但允许继承多个接口 |
常见设计模式 | 模板设计 | 工厂设计,代理设计 |
对象 | 都通过对象的多态性产生实例化对象 | |
局限 | 抽象类有单继承的局限 | 接口没有此局限 |
实际 | 作为一个模板 | 是作为一个标准或是表示一种能力 |
选择 | 如果抽象类和接口都可以使用的话,优先使用接口,因为避免单继承的局限 |
异常
· 异常时导致程序中断运行的一种指令流,如果不对异常进行正确的处理,则可能导致程序的中断执行,造成不必要的损失。
· 异常代表了一种意外的情况,代表了正常情况下不会发生的情况。
· 在程序的设计中必须要考虑各种异常的发生,并正确的做好相应的处理,这样才能保住程序的正常执行。
异常处理格式
try{
//有可能出现异常的语句
}catch(异常类 异常对象){
//编写异常处理语句
}[catch(异常类 异常对象){
//编写异常处理语句
}...]
[finally{
一定会运行到的代码;
}]
Java的异常处理机制
Java异常处理也是按照面向对象的方式进行处理的。
步骤如下:
1 一旦产生异常,则首先会产生一个异常类的实例化对象;
2 在try语句中队异常对象进行捕捉;
3 产生的异常对象与catch语句中的各个异常类型进行匹配,如果匹配成功,则执行catch语句中的代码
使用Exception处理其他异常
· 根据对象的多态性,所以的子类实例可以全部使用父类接收,那么就可以利用向上转型的概念,让所有的异常对象都使用Exception接收。
· 注意:在Java中所以捕获范围小的异常,必须放在捕获范围大的异常之前,否则程序在编译的时候就会出现错误提示。
throws关键字
在定义一个方法的时候可以使用throws关键字声明,使用throws声明的方法表示此方法不处理,而是交给方法调用处进行处理。
throws使用格式
public 返回值类型 方法名称(参数列表...) throws 异常类{}
throw关键字
可以直接使用throw抛出一个异常,抛出的时候直接抛出异常类的实例化对象即可。
注意:throw不会单独的使用
· throw关键字的使用完全符合异常处理机制
· 但是,一般来讲用户都在避免异常的产生,所以不会手工抛出一个新的异常类的实例,而往往会抛出程序中已经产生的异常实例类。
Exception与RuntimeException
这两类的区别如下:
· Exception在程序中是必须使用try...catch进行处理。
· RuntimeException可以不使用try...catch进行处理,但是如果有异常产生,则异常将有JVM进行处理。
进程与线程
● 进程是程序的一次动态执行过程,它经历了从代码加载、执行到执行完毕的一个完整过程,这个过程也是进程本身从产生、发展到最终消亡的过程。
● 多线程是实现并发机制的一种有效手段。进程和线程一样,都是实现并发的一个基本单位。
Java中线程的实现
● 在Java中要实现多线程代码的两种手段:
● 继承Thread类
● 实现Runnable接口
启动线程
线程的主要代码是在run方法里写的,但是启动的时候是调用Thread的start方法启动。
Thread类和Runnable接口的区别
● 实际上Thread类和Runnable接口之间在使用上也是有所区别的,如果一个类继承Thread类,则不适合于多个线程共享资源,而实现了Runnable接口,则可以方便的实现资源的共享。
线程的状态
● 要想实现多线程,必须在主线程中创建新的线程对象。任何线程一般具有五种状态,即创建、就绪、运行、阻塞、终止。
线程操作的主要方法
取得和设置线程名称;
● 在Thread类中,可以通过getName()方法取得线程的
名称,通过setName()方法设置线程的名称。
● 线程的名称一般在启动线程前设置,但也允许为已经运
行的线程设置名称。允许两个Thread对象有相同的名字,但为了清晰,应该尽量避免这种情况的发生。
● 另外,如果程序并没有为线程指定名称,则系统会自动的为线程分配-一个名称。
判断线程是否启动
● 通过Thread类之中的start()方法通知CPU这个线程己经准备好启动,之后就等待分配CPU资源,运行此线程了。那么如何判断一个线程是否已经启动了呢?在Java中可以使用isAlive()方测试线程是否已经启动而且仍然在启动。
线程的强制运行
● 在线程操作中, 可以使用join()方法让一个线程强制运行,线程强制运行期间,其他线程无法运行,必须等待此线程完成之后才可以继续执行。
线程的休眠
● 在程序中允许一个线程进行暂时的休眠,直接使用Thread.sleep()方法即可。
中断线程
● 当一个线程运行的时候,另外一个线程可以直接通过interrrupt()方法,中断其运行状态。
线程了礼让
● 在线程操作中,也可以使用yield()方法将一个线程的操作暂时让给其他线程执行。
同步代码块
● 在代码块上加上“synchronized"关键字的话,则此代码块就称为同步代码块。
● 代码块格式:
synchronized(同步对象){
需要同步的代码;
}
File类
· 在整个io包中,唯一表示与文件本身有关的类就是File类。
· 使用File类可以进行创建或删除文件等常用操作。
· 要想使用File类,则首先要观察File类的构造方法,此类的常用构造方法如下所示:
public File(String pathname)
→实例化File类的时候,必须设置好路径。
File类中的主要方法和常量
方法或常量 | 类型 | 描述 |
---|---|---|
public static final String pathSeparator | 常量 | 表示路径的分隔符(windows是:“;” ) |
public static final String separator | 常量 | 表示路径的分隔符( windows是:“” ) |
public File(String pathname) | 构造 | 创建File类对象, 传入完整路径 |
public boolean createNewFile() throws IOException | 普通 | 创建新文件 |
public boolean delete() | 普通 | 删除文件 |
public boolean exists() | 普通 | 判断文件是否存在 |
public boolean isDirectory() | 普通 | 判断给定的路径是否是一个目录 |
public long lenglh() | 普通 | 返回文件的大小 |
public String[] list() | 普通 | 列出指定目录的全部内容,只是列出了名称 |
public Filc[] listFilcs() | 普通 | 列出指定目录的全部内容,会列出路径 |
public boolean mkdir() | 普通 | 创建一个目录 |
public boolean renameTo(File dest) | 普通 | 为已有的文件重新命名 |
流
· 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成。
字节流与字符流
· 在java.io包中操作文件内容的主要有两大类:
· 字节流
· 字符流
· 两类都分为输入和输出操作。在字节流中输出数据主要是使用OutputStream完成,输入使用的是InputStream, 在字符流中输出主要是使用Writer类完成, 输入主要是使用Reader类完成。
字节流
· 字节流主要是操作byte类型数据,以byte数组为准,主要操作类就是OutputStream、InputStream。
· 字节输出流: OutputStream
· 字节输入流: InputStream
追加新内容
· 之前的所有操作中,如果重新执行程序, 则肯定会覆盖文件中的已有内容, 那么此时可以通过
FielOutputStream向文件中追加内容,FileOutputStream的另外一个构造方法:
· public FileOutputStream(File file,boolean append) throwsFileNotFoundException
· 在构造方法中,如果将append的值设置为true,则表示在文件的末尾追加内容。
字节输入流: InputStream
· 既然程序可以向文件中写入内容,则就可以通过InputStream从文件中把内容读取进来,首先来看InputStream类的定义:
· public abstract class InputStream extends Objectimplements Closeable
· 与OutputStream类一 样, InputStream本 身也是-一个抽象类,必须依靠其子类, 如果现在是从文件中读取,子类肯定是FileInputStream。观察FileInputStream类的构造方法:
· public FilelnputStream(File file) throws FileNotFoundException
字符流
· 在程序中一个字符等于2个字节,那么JAVA提供了Reader、Writer两 个专门操作字符流的类。
· 字符输出流: Writer
· 字符输入流: Reader
使用FileWriter追加文件的内容
· 在使用字符流操作的时候,也可以实现文件的追加功能, 直接使用FileWriter类中的以下构造即可实现追加:
· public FileWriter(File file,boolean append) throwsIOException
· 将append的值设置成true,就表示追加。
字符输入流: Reader
· Reader是使用字符的方式从文件之中取出数据,Reader类的定义如下:
· public abstract class Reader extends Object implementsReadable, Closeable
· Reader本身也是抽象类,如果现在要从文件中读取内容,则可以直接使用FileReader子类。. FileReader的构造方法定义如下:
· public FileReader( File file) throwsFileNotFoundException
字节流与字符流的区别
· 字节流在操作的时候本身是不会用到缓冲区(内存)的,是与文件本身直接操作的,而字符流在操作的时候是使用到缓冲区的。
OutputStreamWriter和InputStreamReader
· 在整个IO包中,实际上就是分为字节流和字符流,但是除了这两个流之外,还存在了一组字节流-字符流的转换类。
· OutputStreamWriter:是Writer的子类,将输出的字符流变为字节流,即:将一个字符流的输出对象变为字节流输出对象。
· InputStreamReader: 是Reader的子类,将输入的字节流变为字符流,即:将一个字节流的输入对象变为字符流的输入对象。
管道流
· 管道流的主要作用是可以进行两个线程间的通讯,分为管道输出流(PipedOutputStream) 、管道输入流(PipedInputStream),如果要想进行管道输出,则必须把输出流连在输入流之上,在PipedOutputStream类上有如下的一个方法用于连接管道:
· public void connect(PipedInputStream snk) throws IOException
打印流
· 在整个IO包中,打印流是输出信息最方便的类,主要包含:
· 字节打印流(PrintStream)
· 字符打印流(PrintWriter)
· 打印流提供了非常方便的打印功能,可以打印任何的数据类型,例如:小数、整数、字符串等等。
System类的常量
· System表示系统类,实际上在java中System类也对IO给予了一定的支持。
System类的常量 | 描述 |
---|---|
public static final PrintStream out | 对应系统标准输出,一 般是显示器 |
public static final PrintStream.err | 错误信息输出 |
public static final InputStream in | 对应着标准输入,一般是键盘 |
GUI
Java图形开发有两种可以使用的技术:AWT、Swing
· AWT:大量使用Windows的系统函数
· Swing:采用Java实现用户界面,可以在任意的系统平台上工作
AWT
AWT(Abstract Windowing Toolkit),抽象窗口工具包,是Java提供的用来建立和设置Java的图形用户界面的基本工具。
AWT中的所有工具类都保存在java.awt包中,此包中的所有操作类可用来建立图形用户界面(GUI)的类,这些类又被称为组件(components)。
AWT包中提供的所有工具类,主要分为以下三种:
? 组件:Component
? 容器:Container
? 布局管理器:LayoutManager
组件
? 在图形界面中,用户经常会看到按钮、标签、菜单等组件。
? 组件会在一个窗体上显示。
? 在整个AWT包中,所有的组件类都是从Component和MenuComponet扩展而来的,这些类会继承这两个类的公共操作。
容器(Container)
? 所有的AWT组件都应该放到容器之中。
? 在容器中,所有的组件都可以设置在容器中的位置、大小等。
? 所有的容器都是Component的子类。
布局管理器(LayoutManager)
? 使用布局管理器可以使容器中的组件按照指定的位置进行摆放。即使容器改变了大小,布局管理器也可以准确的把组件放到指定的位置,这样就可以有效
的保证版面不会混乱。
? 在AWT中所有的布局管理器都是LayoutManager的子类。
Swing简介
? AWT大量的引入了Windows函数, 称为重量级组件。
? Swing使 用Java语言实现,是以AWT平台为基础构建起来的新组件,属于轻量级的图形界面组件,直接使用Swing可以更加轻松的构建用户界面。
基本容器JFrame类的常用操作方法
? 使用JFrame类创建一个窗口
No. | 方法 | 类型 | 描述 |
---|---|---|---|
1 | public JFrame0 throws HeadlessException | 构造 | 创建一个普通的窗体对象 |
2 | public JFrame (String title) throws He adlessException | 构造 | 创建一个窗体对象,并指定标题 |
3 | public void setSize(int width, int height) | 普通 | 设置窗体大小 |
4 | public void setSize(Dimension d) | 普通 | 通过Dimension设置窗体大小 |
5 | public void setBackground(Color c) | 普通 | 设置窗体的背景颜色 |
6 | public void setLocation(int x,int ) | 普通 | 设置组件的显示位置 |
7 | public void setLocation(Point p) | 普通 | 通过Point来设置组件的显示位置 |
8 | public void setVisible(boolean b) | 普通 | 显示或隐藏组件 |
9 | public Component add(Component comp) | 普通 | 向容器中增加组件 |
10 | public void setLayout(LayoutManager mgr) | 普通 | 设置布局管理器,如果设置为null表示不使用 |
11 | public void pack() | 普通 | 调整窗口大小,以适合其子组件的首选大小和布局 |
12 | public Container getContentPane() | 普通 | 返回此窗体的容器对象 |
Dimension类
? 在JFrame中设置窗体的大小,也可以使用Dimension类完成。?此类封装了组件的现实宽度和高度。
Point类
? 组件的显示位置也可以使用Point类指定,此类封装的是显示位置的X、Y坐标。
组件JLabel类的常用方法和常量
No. | 方法及常量 | 类型 | 描述 |
---|---|---|---|
1 | public static final int LEFT | 常量 | 标签文本左对齐 |
2 | public static final int CENTER | 常量 | 标签文本居中对齐 |
3 | public static final int RIGHT | 常量 | 标签文本右对齐 |
4 | public JLabelO throws HeadlessException | 构造 | 创建一个ILabeI对象 |
5 | public JLabel(String text) throws HeadlessException | 构造 | 创建一个标签并指定文本内容,默认为左对齐 |
6 | public Label(String text,int alignment) throws HeadlessException | 构造 | 创建一个标签并指定文本内容以及对齐方式,可以使用JLabel. LEFT. JLabel RIGHT、JLabe1.CENTER三个值 |
7 | public JLabel(String text,Icon icon, int horizontalAlignment) | 构造 | 创建具有指定文本、图像和水平对齐方式的JLabeI对象 |
8 | public JLabel(Icon image,int horizontalAlignment) | 构造 | 创建具有指定图像和水平对齐方式的JLabel实例 |
9 | public void setText(String text) | 普通 | 设置标签的文本 |
10 | public String getText() | 普通 | 取得标签的文本 |
11 | public void setAlignment(int alignment) | 普通 | 设置标签的对齐方式 |
12 | public void setIcon(Icon icon) | 普通 | 设置指定的图象 |
JButton组件
JButton组件表示一个普通的按钮,直接使用此类就可以在窗体中增加一个按钮。
布局管理器
· 使用布局管理器可以管理组件的显示位置,每当需要重新调整屏幕大小或重新绘制屏幕上任一项目时,都要用到布局管理器。
· 在Swing中使用的所有布局管理器都实现LayoutManager接口,在Swing中主要使用以下五种常见的布局管理器:
? FlowLayout
? BorderIayout
? GridIayout
? Cardlayout
? 绝对定位。
FlowLayout
FlowLayout属于流式布局管理器,使用此种布局方式,所有的组件会像流水一样一次进行排列。
BorderLayout
BorderI ayout将一个窗体的版面划分成东、西、南、北、中五个区域,可以直接将需要的组件放到这五个区域中即可。
GridLayout
? GridIayout布局管理器是以表格的形式进行管理的
? 在使用此布局管理器的时候必须设置显示的行数和列数
CardLayout
? CardLayout就是将一组组彼此重叠的组件进行布局,就像一张张卡片一样,这样每次只会展现一个界面
绝对定位
如果不在窗体中指定布局管理器,也可以通过设置绝对坐标的方式完成布局设置。
public void setBounds(int x,int y,int width,int height)
JPanel
? 使用Jpanel可以完成各种复杂的界面显示。
? 在JPanel中可以加入任意的组件,之后直接将Jpanel容器加入到JFrame容器中即可显示。
应用:可以将多个组件加入到JPanel中实现复杂的排列。
? 使用JPanel并结合LayoutManager可以方便地管理组件。
? 使用LayoutManager对多个Jpanel进行排列,而每个JPanel中也可以分别使用不同的LayoutManager管理组件,完成对组件进行复杂的排列。
JSplitPane
JSplitPane主要功能是分割面板,可以将一个窗体分为两个子窗体,可以是水平排列也可以是垂直排列。
JSplitPane类的主要方法和常量
No. | 方法及常量 | 类型 | 描述 |
---|---|---|---|
1 | public static final int HORIZONTAL_ _SPLIT | 常量 | 表示水平分割 |
2 | public static final int VERTICAL_ SPLIT | 常量 | 表示垂直分割 |
3 | public JSplitP ane(int newOrientation) | 构造 | 创建对象,并指明分割方式 |
4 | public JSplitP ane(int newOrient ation, boolean newContinuousLayout, ComponcntnewLeftComponent, Component newRightComponent) | 构造 | 创建对象、指明分割方式、分割条改变是否重绘图象以及两端的显示组件 |
5 | public void setDividerL ocation( double proportionalLocation) | 普通 | 设置分割条的位置,按百分比 |
6 | public void sctOneTouchExpandable(boolean newValue) | 普通 | 设置是否提供快速展开折叠的功能 |
7 | public void setDividerSize(int newSize) | 普通 | 设置分割条大小 |
JTabbedPane
? JTabbedPane是在一个面板上设置多个选项卡供用户选择
? 如果用户需要查看相关方面信息,直接点开选项卡即可浏览,通过这种方式可以方便的管理相关信息。
JScrollPane常用方法和常量
No. | 方法及常量 | 类型 | 描述 |
---|---|---|---|
1 | static final int HORIZONTAL_ SCROLLBAR ALWAYS | 常量 | 始终显示水平滚动条 |
2 | static final int HORIZONTAL_ SCROLLBAR _NEVER | 常量 | 任何情况下都不显示水平滚动条 |
3 | static final int HORIZONTAL_ SCROLLBAR_ AS_ NEEDED | 常量 | 根据自身需要显示水平滚动条 |
4 | static final int VERTICAL SCROLLBAR ALWAYS | 常量 | 始终显示垂直滚动条 |
5 | static final int VERTICAL_ SCROLLBAR_ NEVER | 常量 | 任何情况下都不显示垂直滚动条 |
6 | static final int VERTICAL SCROLLBAR AS_ NEEDED | 常量 | 根据自身需要显示垂直滚动条 |
7 | public JScrolP ane(Component view) | 构造 | 将指定的组件加入滚动条,根据大小显示垂直或水平滚动条 |
8 | public JScrolP ane(Component view,int vsbPolicy,int hsbPolicy) | 构造 | 将指定的组件加入滚动条,根据需要设置是否显示垂直或水平滚动条 |
9 | public void setHorizontalSrollB arPolicy(nt policy) | 普通 | 设置水平滚动条的显示策略 |
10 | public void setVerticalCrollBarPolicy(int policy) | 普通 | 设置垂直滚动条的显示策略 |
JDesktopPane与JInternalFrame
? 在Swing中也可以完成内部窗体的显示,在一个窗体中可以显示多个子窗体,每一个子窗体都无法超出父窗体的区域。
? JDesktopPane规定了一个父窗口的基本形式。
? JInternalFrame规定了各个子窗体,JInternalFrame需 要加入到JDesktopPane之中。
JDesktopPane常用方法
No. | 方法 | 类型 | 描述 |
---|---|---|---|
1 | public JDesktopPane0 | 构造 | 创建一个JDesktopPane0对象 |
2 | public void setSelectedFrame(JInternalFrame f) | 普通 | 设置此JDesktopPane中当前活动的普通JInternalFrame |
JInternalFrame常用方法
No. | 方法 | 类型 | 描述 |
---|---|---|---|
1 | public JInteralFrame(String title) | 构造 | 创建不可调整大小的、不可关闭的、不可最大化的、不可图标化的、具有指定标题的JInternalFrame |
2 | public JInternalFrame(String title,boolean resizable) | 构造 | 创建不可关闭的、不可最大化的、不可图标化的,以及具有指定标题和可调整大小的JInternalFrame |
3 | public JIntemalFrame(String title,boolean resizable,boolean closable,boolean maximizable,boolean iconifiable) | 构造 | 创建可调整、可关闭、可最大化、可图标化的JInternalFrame |
JTextComponent的常用方法
No. | 方法 | 类型 | 描述 |
---|---|---|---|
1 | public String getTextO | 普通 | 返回文本框的所有内容 |
2 | public String getSelectedText() | 普通 | 返回文本框中选定的内容 |
3 | public int getSelectionStart() | 普通 | 返回文本框选定内容的开始点 |
4 | public int getSelectionEnd() | 普通 | 返回文本框选定内容的结束点 |
5 | public void selectAll() | 普通 | 选择此文本框的所有内容 |
6 | public void setText(String t) | 普通 | 设置此文本框的内容 |
7 | public void select(int selectionStart,int selectionEnd) | 普通 | 将指定开始点和结束点之间的内容选定 |
8 | public void setEditable(boolean b) | 普通 | 设置此文本框是否可编辑 |
单行文本输入组件
?JTextField组件可 以实现单行文本输入,此类除了使用JTextComponet类的方法外,还可以使用以下的方法
No | 方法 | 类型 | 描述 |
---|---|---|---|
1 | public JTextField() | 构造 | 构造一个默认的文本框 |
2 | public JTextField(String text) | 构造 | 构造一个指定文本内容的文本框 |
3 | public void setColumns(int columns) | 普通 | 设置显示长度 |
密文输入组件JPasswordField
? JText是 使用明文方式进行数据显示的。
? 如果现在需要将显示的内容设置成其他字符,则可以使用JPasswordField类,常用方法如下:
No | 方法 | 类型 | 描述 |
---|---|---|---|
1 | public JPasswordField() | 构造 | 构造默认的JPasswordField对象 |
2 | public JPasswordField(String text) | 构造 | 构造指定内容的JPasswordField对象 |
3 | public char getEchoChar() | 构造 | 设置回显的字符,默认为“*” |
4 | public char getEchoChar() | 构造 | 得到回显的字符 |
5 | public char[] getPassword() | 构造 | 得到此文本框的所有内容 |
多行文本输入组件: JTextArea
?如果要想输入多行文本,则可以使用JTextArea实现多行文本的输入,此类扩展了JTextComponent类
No | 方法 | 类型 | 描述 |
---|---|---|---|
1 | public JTextAreaO | 构造 | 构造文本域,行数和列数为0 |
2 | public JTextArea(int rows,int columns)构造 | 构造文本域,指定文本域的行数和列数 | |
3 | public JTextArea(String text,int rows,int columns) | 构造 | 指定构造文本域的内容、行数和列数 |
4 | public void append(String str) | 普通 | 在文本域中追加内容 |
5 | public void replaceRange(String str,int start,int end) | 普通 | 替换文本域中指定范围的内容 |
6 | public void insert(String str,int pos) | 普通 | 在指定位置插入文本 |
7 | public void setLineWrap(boolean wrap) | 普通 | 设置换行策略 |
事件和监听器
? 要想让组件发挥作用,必须对所有的组件进行事件处理。
? Java中使用事件表示一个对象的状态发生变化。例如当按钮按下时,实际上按钮的状态发生了变化,此时就会产生一个事件,如果要想处理此事件,就需要事件的监听者能不断的监听事件的变化,并根据这些事件进行相应的处理。
在Swing编程中,所有的事件类都是EventObject类的子类
窗体事件
?WindowListener是专门处理窗体的事件监听接口,窗体的所有变化都可以使用这个接口进行监听。
No | 方法 | 类型 | 描述 |
---|---|---|---|
1 | void windowActivated(WindowEvent e) | 普通 | 将窗口变为活动窗口时触发 |
2 | void windowDeactivated(WindowEvent e) | 普通 | 将窗口变为不活动窗口时触发 |
3 | void windowClosed(WindowEvent e) | 普通 | 当窗口被关闭时触发 |
4 | void windowClosing(WindowEvent e) | 普通 | 当窗口正在关闭时触发 |
5 | void windowIconified(WindowEvent e) | 普通 | 窗口最小化时触发 |
6 | void windowDeiconified(WindowEvent e) | 普通 | 窗口从最小化恢复到正常状态时触发 |
7 | void windowOpened(WindowEvent e) | 普通 | 窗口打开时触发 |
动作事件,及监听处理
? 一个按钮想要让其变得有意义,就必须使用事件处理,在Swing的事件处理中,可以使用ActionListener接口处理按钮的动作事件。
Act ionL istener接口只定义了一个方法。
No | 方法 | 类型 | 描述 |
---|---|---|---|
1 | void actionPerformed(ActionEvent e) | 普通 | 发生操作时调用 |
键盘事件及监听处理
? 在Swing的事 件处理中也可以使用KcyListcner接口对键盘的操作进行监听。
此接口定义了如下方法:
No | 方法 | 类型 | 描述 |
---|---|---|---|
1 | void keyTyped(KeyEvent e) | 普通 | 键入某个键时调用 |
2 | void keyPressed(KeyEvent e) | 普通 | 键盘按下时调用 |
3 | void keyReleased(KeyEvent e) | 普通 | 键盘松开时调用 |
如果想要取得键盘键入的内容,可以通过keyEvent取得,此类的常用方法如下:
No | 方法 | 类型 | 描述 |
---|---|---|---|
1 | public char getKeyChar() | 普通 | 返回键入的字符,只针对于keyTyped有意义 |
2 | public int getKeyCode() | 普通 | 返回键入字符的键码 |
3 | public static String getKeyText(int keyCode) | 普通 | 返回此键的信息,如:“HOME"、 “F1"或“A”等 |
鼠标事件及其监听
如果想对一个鼠标的操作进行监听,例如,鼠标按下、松开等,则可以实现MouseListener接口
No | 方法 | 类型 | 描述 |
---|---|---|---|
1 | void mouseClicked(MouseEvent e) | 普通 | 鼠标单击时调用(按下并释放) |
2 | void mousePressed(MouseEvent e) | 普通 | 鼠标按下时调用 |
3 | void mouseR eleased(MouseEvent e) | 普通 | 鼠标松开时调用 |
4 | void mouseEntered(MouseEvent e) | 普通 | 鼠标进入到组件时调用 |
5 | void mouseExited(MouseEvent e) | 普通 | 鼠标离开组件时调用 |
MouseEvent
? 在每个事件触发后都会产生MouseEvent事件,此事件可以得到鼠标的相关操作
No | 方法及常量 | 类型 | 描述 |
---|---|---|---|
1 | public static final int BUTTON1 | 常量 | 表示鼠标左键的常量 |
2 | public static final int BUTTON2 | 常量 | 表示鼠标滚轴的常量 |
3 | public static final int BUTTON3 | 常量 | 表示鼠标右键的常量 |
4 | public int getButton() | 普通 | 以数字形式返回按下的鼠标键 |
5 | public int getClickCount() | 普通 | 返回鼠标的单击次数 |
6 | public static String getMouseModifiersText(int modifiers) | 普通 | 以字符串形式返回鼠标按下的键信息 |
7 | public int getX() | 普通 | 返回鼠标操作的X坐标 |
8 | public int getY() | 普通 | 返回鼠标操作的Y坐标 |
鼠标拖拽事件及监听处理
? 在一般的图形界面中经常可以看到鼠标拖拽操作的情况,在Swing中可以使用MouseMotionListener接口完成鼠标的拖拽操作。
No | 方法 | 类型 | 描述 |
---|---|---|---|
1 | void mouseDragged(MouseEvent e) | 普通 | 在组件上按下并拖动时调用 |
2 | void mouseMovedMouseEvent e) | 普通 | 鼠标移动到组件时调用 |
认识JRadioButton
? 单选钮就是在给出的多个显示信息中指定选择一个,在Swing中使用JRadioButton完成一组单选钮的操作。
JRadioButton类的常用方法如下:
No | 方法 | 类型 | 描述 |
---|---|---|---|
1 | public JRadioButton(Icon icon) | 构造 | 建立一个单选钮, 并指定图片 |
2 | public JRadioButton(Icon icon,boolean selected) | 构造 | 建立一个单选钮, 并指定图片和其是否选定 |
3 | public JRadioButton(String text) | 构造 | 建立一个单选钮,并指定其文字,默认为不选定 |
4 | public JRadioButton(String text,boolean selected) | 构造 | 建立一个单选钮, 并指定文字和其是否选定 |
5 | public JRadioButton(String text,Icon icon,boolean selected) | 构造 | 建立一个单选钮,并指定图片,文字和其是否选定 |
6 | public void setSelected(boolean b) | 普通 | 设置是否选中 |
7 | public boolean isSelected() | 普通 | 返回是否被选中 |
8 | public void setText(String text) | 普通 | 设置显示文本 |
9 | public void setIcon(Icon defaultIcon) | 普通 | 设置图片 |
JRadioButton事件处理
? 单选按钮操作中,使用ItemListener接口进行事件的监听,接口定义如下的方法
No | 方法 | 类型 | 描述 |
---|---|---|---|
1 | void itemStateChanged(ItemEvent e) | 普通 | 当用户取消或选定某个选项时调用 |
此方法中存在ItemEvent事件,此事件常用方法及常量如下所示
No | 方法 | 类型 | 描述 |
---|---|---|---|
1 | public static final int SELECTED | 常量 | 选项被选中 |
2 | public static final int DESELECTED | 常量 | 选项未被选中 |
3 | public Object ge tItem() | 普通 | 返回受事件影响的选项 |
4 | public int getStateChange() | 普通 | 返回选定状态的类型(己选择或己取消) |
JCheckBox
程序可以通过JCheckBox实现复选框功能,
No | 方法 | 类型 | 描述 |
---|---|---|---|
1 | public JCheck Box(Icon icon) | 构造 | 创建一个带图标的对象,但不选定 |
2 | public JCheck Box(Icon icon,boolean selected) | 构造 | 创建一个带图标的对象,并指定其是否选定 |
3 | public JCheckBox(String text) | 构造 | 创建一个带文本的对象,但不选定 |
4 | public JCheck Box(String text,boolean selected) | 构造 | 创建一个带文本的对象,并指定其是否选定 |
5 | public JCheckBox(String text,Icon icon,boolean selected) | 构造 | 创建一个带文本和图标的对象,并指定是否被选定 |
JMenuBar的常用方法
No | 方法 | 类型 | 描述 |
---|---|---|---|
1 | public JMenuBar() | 构造 | 创建新的JMenuBar对象 |
2 | public JMenu add(Menu c) | 普通 | 将指定的JIMenu加入到JMenuBar之中 |
3 | public JMenu getMenu(int index) | 普通 | 返回指定位置的菜单 |
4 | public int getMenuCount() | 普通 | 返回菜单栏上的菜单数 |
JMenu的常用方法
No | 方法 | 类型 | 描述 |
---|---|---|---|
1 | public JMenu(String s) | 构造 | 创建新的JMenu,并指定菜单名称: |
2 | public JMenuItem add(JMenuItem menuItem) | 普通 | 增加新的菜单项 |
3 | public void addSeparator() | 普通 | 加入分隔线 |
JMenultem
No | 方法 | 类型 | 描述 |
---|---|---|---|
1 | public JMenuItem(Icon icon) | 构造 | 创建带有图标的JMenultem |
2 | public JMenuItem(String text) | 构造 | 创建带有指定文本的JMenuItem |
3 | public JM enuItem(String text,Icon icon) | 构造 | 创建带有指定文本带图标的JMenultem |
4 | public JMenuItem(String text, int mnemonic) | 构造 | 创建带有指定文本的JMenuItem,并指定助记符 |
5 | public void setMnemonic(int mnemonic)普通 | 指定菜单项的助记符 | |
6 | public void setAccelerator(KeyStroke keyStroke) | 普通 | 设置快捷键的组合键 |
JFileChooser常用方法
No | 方法 | 类型 | 描述 |
---|---|---|---|
1 | public JFileChooser() | 构造 | 指向用户默认的目录,在windows中 是“我的文档”在Unix上是用户的主目录 |
2 | public JFileChooser(String currentDirectoryPath) | 构造 | 指定文件选择的目录 |
3 | public File getSelectedFile() | 普通 | 返回选择的文件 |
4 | public int showSaveDialog(Component parent) throws HeadlessException | 普通 | 打开保存对话框,返回保存状态 |
5 | public int showOpenDialog(Component parent) throws Headless Exception | 普通 | 打开文件选择对话框, 返回打开状态 |
6 | public void setDialogTitle(String dialogTitle) | 普通 | 设置文件选择框的标题 |
7 | public void setApproveButtonText(String approveButtonText) | 普通 | 设置文件选择的接收按钮内容 |
以上是关于java 怎么判断一个类是不是继承了某接口的主要内容,如果未能解决你的问题,请参考以下文章