给需要监听的窗口面板或者按钮添加监听器
addMouse(Key/Windows)Listener();这个方法需要一个参数
Mouse/Key/WindowsAdapter 需要构造其子类 或者用匿名内部类
里面写监听的事件发生后需要做的事
MouseListener
public class TestMouseListener {
public static void main(String[] args) {
new MyMouse("画图");
}
}
class MyMouse extends Frame{
//需要画笔 需要监听鼠标的位置,需要集合来存储这个点
private ArrayList points;
public MyMouse(String title) {
super(title);
setBounds(200,200,400,300);
//存鼠标点击的点
points= new ArrayList<>();
JButton button = new JButton("按钮");
button.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
System.out.println("点击了按钮");
}
});
this.add(button);
//鼠标监听器 针对窗口
this.addMouseListener(new MyMouseListentr());
this.setVisible(true);
new CloseWindows(this);
}
//添加一个点到界面上去
public void addPoint (Point point){
points.add(point);
}
public void paint(Graphics g){
Iterator iterator = points.iterator();
while (iterator.hasNext()){
Point point=(Point) iterator.next();
g.setColor(Color.black);
g.fillOval(point.x,point.y,10,10);
}
}
private class MyMouseListentr extends MouseAdapter {
//鼠标 按下 弹起; 按住不放
@Override
public void mousePressed(MouseEvent e) {
MyMouse mymouse=(MyMouse) e.getSource();
//点击的时候会在界面上加个点
mymouse.addPoint(new Point(e.getX(),e.getY()));
//每次点击鼠标都重新画一遍
mymouse.repaint();
}
}
KeyListener
public class TestMouseListener {
public static void main(String[] args) {
new MyMouse("画图");
}
}
class MyMouse extends Frame{
//需要画笔 需要监听鼠标的位置,需要集合来存储这个点
private ArrayList points;
public MyMouse(String title) {
super(title);
setBounds(200,200,400,300);
//存鼠标点击的点
points= new ArrayList<>();
JButton button = new JButton("按钮");
button.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
System.out.println("点击了按钮");
}
});
this.add(button);
//鼠标监听器 针对窗口
this.addMouseListener(new MyMouseListentr());
this.setVisible(true);
new CloseWindows(this);
}
//添加一个点到界面上去
public void addPoint (Point point){
points.add(point);
}
public void paint(Graphics g){
Iterator iterator = points.iterator();
while (iterator.hasNext()){
Point point=(Point) iterator.next();
g.setColor(Color.black);
g.fillOval(point.x,point.y,10,10);
}
}
private class MyMouseListentr extends MouseAdapter {
//鼠标 按下 弹起; 按住不放
@Override
public void mousePressed(MouseEvent e) {
MyMouse mymouse=(MyMouse) e.getSource();
//点击的时候会在界面上加个点
mymouse.addPoint(new Point(e.getX(),e.getY()));
//每次点击鼠标都重新画一遍
mymouse.repaint();
}
}
}
WindowListener
可以监听窗口的状态 如果当前窗口被打开(鼠标悬浮在窗口内),窗口是激活状态,否则就是未激活状态,若要对窗口内进行一些操作,就需要监听窗口是激活状态
public class TestWindow {
public static void main(String[] args) {
new WindowFrame();
}
}
class WindowFrame extends Frame{
public WindowFrame(){
setBackground(Color.BLUE);
setVisible(true);
setBounds(100,100,200,200);
this.addWindowListener(
new WindowAdapter() {
@Override
public void windowOpened(WindowEvent e) {
System.out.println("窗口已打开");
}
@Override
public void windowClosing(WindowEvent e) {
System.out.println("windowClosing");
System.exit(0);
}
@Override
public void windowClosed(WindowEvent e) {
System.out.println("windowClosed");
}
//窗口激活
@Override
public void windowActivated(WindowEvent e) {
WindowFrame windowframe=(WindowFrame) e.getSource();
windowframe.setTitle("激活了");
System.out.println("windowActivated");
}
@Override
public void windowDeactivated(WindowEvent e) {
System.out.println("windowDeactivated");
}
});
}
}