swing三大特性
布局 绘图 事件处理
事件处理机制
案例demo9_3 点击不同按钮让面板的背景色发生相应的变化(对鼠标的监听)
/**
* 功能:讲解事件处理机制
*/
package com.test2;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class demo9_3 extends JFrame implements ActionListener{
MyPanel mypanel =null;
cat cc=new cat();
JButton jb1,jb2;
public static void main(String[] args) {
demo9_3 demo =new demo9_3();
}
public demo9_3()
{
mypanel=new MyPanel();
jb1=new JButton("黑色");
jb2=new JButton("红色");
this.add(jb1,BorderLayout.NORTH);
mypanel.setBackground(Color.black);
this.add(mypanel);
this.add(jb2,BorderLayout.SOUTH);
//注册监听,监听着可以有多个,不仅仅是一个
//指定action命令,当单击是就把黑色这个值传过去了
jb1.setActionCommand("黑色");
jb1.addActionListener(this);
jb1.addActionListener(cc);
jb2.setActionCommand("红色");
jb2.addActionListener(this);
jb2.addActionListener(cc);
this.setSize(200,200);
this.setLocation(200,200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
@Override
//对事件处理的方法
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("黑色")){
System.out.println("您点击了黑色按钮!");
mypanel.setBackground(Color.black);
}else{
mypanel.setBackground(Color.red);
System.out.println("您点击了红色按钮!");
}
}
}
class cat implements ActionListener
{
@Override
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals ("黑色"))
{
System.out.println("猫也知道您按下了黑色按钮!");
}
}
}
class MyPanel extends JPanel
{
public void paint(Graphics g)
{
super.paint(g);
g.setColor(Color.red);
//System.out.println("我的主人,我的大小又变咯!");
}
}
说明:
事件源是:JButton对象.
事件:点击按钮将会发生ActionEvent事件,具体产生的对象就是args().
事件监听者:(就是类的对象)
事件处理方法:actionPerformed中处理
介绍:
世界处理采用的是委派事件模型.委派事件模型指事件发生时,产生事件的对象(即事件源)会把此信息传递给事件监听者处理一种方式,而信息就是java.awt.event 事件类库里某个类所创建的对象,我们暂时把它称为事件对象
案例demo9_4 让小球随着键盘的按键上下移动(对键盘的监听)
/**
* 功能:加深对事件处理机制的理解,通过上下左右键来控制一个小球的移动.
*/
package com.test2;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class demo9_4 extends JFrame {
MyPanel1 mp=null;
public static void main(String[] args) {
demo9_4 demo=new demo9_4();
}
public demo9_4()
{
mp =new MyPanel1();
this.setSize(400, 400);