Java中instanceof运算符用法详解

来源:互联网 发布:telnet udp 连接端口 编辑:程序博客网 时间:2024/05/16 06:31

一、 instanceof运算符可以确定对象是否属于一个特定的类。

该运算符是二目运算符,左边的操作元是一个对象,右边是一个类,当左边的对象是右边的类或子类创建的对象时,该运算符运算的结果是true,否则是false。例:class instanceOfDemo{public static void main(String []args){instanceOfDemo t=new instanceOfDemo();    if(t instanceof instanceOfDemo){    System.out.println("t是instanceOfDemo的实例");    }    }}

二、对象 instanceof 运算符

前面我们只是简单提到instanceof运算符,因为掌握该运算符号需要类和子类的知识,instanceof运算符是Java独有的双目运算符,其左面的操作元是对象,右面的操作元是类,当左面的操作元是右面的类或其子类所创建的对象时,instanceof运算的结果是true,否则是false。

三、下面我们来看一下instanceof具体在组件及事件处理的MouseEvent事件中的使用(仔细观察其中的instanceof语句)

(1)Example9_10.java
public class Example9_10{
public static void main(String[] args){
WindowMouse win=new WindowMouse();
win.setTitle(“处理鼠标事件”);
win.setBounds(10,10,460,360);
}
}
(2)WindowMouse.java
import java.awt.*;
import javax.swing.*;
public class WindowMouse extends JFrame{
JTextField text;//一个JTextField
JButton button;//一个JButton
JTextArea textArea;//一个JTextArea
MousePolice police;
WindowMouse(){
init();
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void init(){
setLayout(new FlowLayout());
text=new JTextField(8);
textArea=new JTextArea(5,28);
police=new MousePolice();
police.setJTextArea(textArea);
text.addMmouseListener(police);
button=new JButton(“按钮”);
button.addMouseListener(police);
addMouseListener(police);
add(button);
add(text);
add(new JScorollPane(textArea));
}
}
(3)MousePolice.java
import java.awt.event.*;
inport javax.swing.*;
public class MousePolice implements MouseListener{//监视器
JTextAream area;
public void setJTextArea(JTextArea area){
this.area=area;
}
public void mousePressed(MouseEvent e){
area.append(“\n鼠标按下,位置:”+”(“+e.getX()+”,”+e.getY()+”)”);
public void mouseReleased(MouseEvent e){
area.append(“\n鼠标释放,位置:”+”(“+e.getX()+”,”+e.getY()+”)”);
}
public void mouseEntered(MouseEvent e){
if(e.getSource() instanceof JButton)//获取发生鼠标事件的事件源(按钮)
area.app(“\n鼠标进入按钮,位置:”+”(“+e.getX()+”,”+e.getY()+”)”);
if(e.getSource() instanceof JTextField)//获取发生鼠标事件的事件源(文本框)
area.app(“\n鼠标进入文本框,位置:”+”(“+e.getX()+”,”+e.getY()+”)”);
if(e.getSource() instanceof JFrame)//获取发生鼠标事件的事件源(窗口)
area.app(“\n鼠标进入窗口,位置:”+”(“+e.getX()+”,”+e.getY()+”)”);
}

public void mouseExited(MouseEvent e){
area.append(“\n鼠标退出,位置:”+”(“+e.getX()+”,”+e.getY()+”)”);
}
publiv void mouseClicked(MouseEvent e){
if(e.getClickCount()>=2)
area.setText(“鼠标连击,位置:”+”(“+e.getX()+”,”+e.getY()+”)”);
}
}
总结:注意其中的instanceof语句为
if(e.getSource() instanceof JButton)因为这个程序中只有一个JButton按钮所以用instanceof
而当程序中有多个JButton按钮时,
例如:JButton button1,button2;
则可以判断获取发生鼠标事件的事件源具体为button1时
即:if(e.getSource() ==button1)

原创粉丝点击