十三周总结
菜单组件
鼠标监听器MouseMotionListener
对于鼠标的移动和拖放,另外用鼠标运动监听器MouseMotionListener。
因为许多程序不需要监听鼠标运动,把两者分开可简化程序。
相应事件和处理方法
鼠标事件 处理方法
MOUSE_MOVED MouseMoved (MouseEvent) 鼠标在移动
MOUSE_DRAGGED MouseDragged(MouseEvent) 鼠标被拖动
鼠标事件指与鼠标相关的事件,继承了MouseEvent接口。具体的事件主要有以下一些。
click:按下鼠标(通常是按下主按钮)时触发。
dblclick:在同一个元素上双击鼠标时触发。
mousedown:按下鼠标键时触发。
mouseup:释放按下的鼠标键时触发。
mousemove:当鼠标在一个节点内部移动时触发。当鼠标持续移动时,该事件会连续触发。为了避免性能问题,建议对该事件的监听函数做一些限定,比如限定一段时间内只能运行一次。
mouseenter:鼠标进入一个节点时触发,进入子节点不会触发这个事件(详见后文)。
mouseover:鼠标进入一个节点时触发,进入子节点会再一次触发这个事件(详见后文)。
mouseout:鼠标离开一个节点时触发,离开父节点也会触发这个事件(详见后文)。
mouseleave:鼠标离开一个节点时触发,离开父节点不会触发这个事件(详见后文)。
contextmenu:按下鼠标右键时(上下文菜单出现前)触发,或者按下“上下文菜单键”时触发。
wheel:滚动鼠标的滚轮时触发,该事件继承的是WheelEvent接口。
import javax.swing.;
import java.awt.;
import java.awt.event.*;
public class MouseDemo {
//定义该图形中所需的组件的引用
private Frame f;
private Button bt;
MouseDemo()//构造方法
{
madeFrame();
}
public void madeFrame() {
f = new Frame("My Frame");
f.setBounds(300, 100, 600, 500);
f.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
bt = new Button("My Button");
f.add(bt);
myEvent();
f.setVisible(true);
}
private void myEvent() {
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e) {
System.out.println("窗体执行关闭!");
System.exit(0);
}
});
bt.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e) {
System.out.println("按钮活动了!");
}
});
bt.addMouseListener(new MouseAdapter()//鼠标监听
{
private int count = 1;
private int mouseCount = 1;
public void mouseEntered(MouseEvent e) {
System.out.println("鼠标监听" + count++);
}
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2)
System.out.println("鼠标被双击了");
else System.out.println("鼠标被点击" + mouseCount++);
}
});
}
public static void main(String[] agrs) {
new MouseDemo();
}
}