展开全部
貌似这个是不可以自定义的
JAVA挎平台
可以去别的操作系统运行
按纽就改变了
JAVA挎平台
可以去别的操作系统运行
按纽就改变了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
好象在JButton这个类中不能定义,好象在Button中能
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Java中的鼠标事件和键盘事件
任何组件上都可以发生鼠标事件,如:鼠标进入组件、退出组件、在组件上方单击鼠标、拖动鼠标等都发生鼠标事件,也就是说,组件可以成为发生鼠标事件的事件源。
18.1 使用MouseListener接口处理鼠标事件
使用MouseListener接口可以处理5种操作发生的鼠标事件:
(1)在事件源上按下鼠标键。mousePressed(MouseEvent )
(2)在事件源上释放鼠标键。mouseReleased(MouseEvent )
(3)在事件源上点击鼠标键。 mouseClicked(MouseEvent )
(4)鼠标进入事件源。 mouseEntered(MouseEvent )
(5)鼠标退出事件源。 mouseExit(MouseEvent )
鼠标事件的类型是MouseEvent,即当发生鼠标事件时,MouseEvent类自动创建一个事件对象。
MouseEvent类中有下列几个重要的方法:
(1)getX() 获取鼠标在事件源坐标系中的x坐标。
(2)getY() 获取鼠标在事件源坐标系中的y坐标。
(3)getModifiers() 获取鼠标的左键或右键。鼠标的左键和右键分别使用InputEvent类中的常量BUTTONl_MASK和BUTTON3_MASK来表示
(4)getClickCount() 获取鼠标被单击的次数。
(5)getSource() 获取发生鼠标事件的事件源。
事件源获得监视器的方法是addMouseListener(监视器)。
MouseListener接口中有如下方法:
(1)mousePressed(MouseEvent) 负责处理鼠标按下事件。即,当你在事件源按下鼠标时,监视器发现这个事件后将自动调用接口中的这个方法对事件作出处理。
(2)mouseReleased(MouseEvent) 负责处理鼠标释放事件。即,当你在事件源释放鼠标时,监视器发现这个事件后将自动调用接口中的这个方法对事件作出处理。
(3)mouseEntered(MouseEvent) 负责处理鼠标进入事件源事件。即,当鼠标进入时,监视器发现这个事件后将自动调用接口中的这个方法对事件作出处理。
(4)mouseExited(MouseEvent) 负责处理鼠标离开事件。即,当鼠标离开容器时,监视器发现这个事件后将自动调用接口中的这个方法对事件作出处理。
(5)mouseClicked(MouseEvent) 负责处理点击鼠标事件。即,当鼠标被单击时,监视器发现这个事件后将自动调用接口中的这个方法对事件作出处理。
现在我们给出一个小程序mouse1.java,在这个小程序中有一个文本框,它负责记录鼠标事件。当鼠标进入小程序时,文本区显示甲鼠标进来了”;当鼠标离开时,文本区显示“鼠标走开了”;当鼠标被按下时,文本区显示“鼠标按下了”,并显示鼠标的坐标。
在下面例子mouse2.java中,当在画布上按下鼠标左键时,在鼠标位置处绘制一个圆;当按下鼠标右键时,在鼠标位置处绘制一个矩形:当鼠标退出画布时,清除绘制的全部图形。
下面的例子mouse3.java分别监视按钮、文本框和容器上的鼠标事件,当发生鼠标事件时,获取鼠标的坐标值,注意,事件源的坐标系的左上角是坐标源点
18.2 使用MouseMotionListener接口处理鼠标事件
使用MouseMotionListener接口可以处理两种操作发生的鼠标事件:
(1)在事件源上拖动鼠标。
(2)在事件源上移动鼠标。
鼠标事件的类型是MouseEvent,即当发生鼠标事件时,MouseEvent类自动创建一个事件对象。 事件源获得监视器的方法是addMouseMotionListener(监视器)。
MouseMotionListener接口中有如下方法:
(1)mouseDragged(MouseEvent) 负责处理鼠标拖动事件。即,当你在事件源拖动鼠标时,监视器发现这个事件后将自动调用接口中的这个方法对事件作出处理。
(2)mouseMoved(MouseEvent) 负责处理鼠标移动事件。即,当你在事件源移动鼠标时,监视器发现这个事件后将自动调用接口中的这个方法对事件作出处理。
在这里我们也提供一个非常简单的用鼠标作画的小程序mouse4.java。我们的想法很简单,只要我们能用鼠标画点,那么就可以用鼠标自由作画了。我们已经会用drawLine(int x1,int yl,int x2,int y2)画从点(x1,y1)到点(x2,y2)的直线,那么当直线的起点和终点相同时,就画出了一个点。
现在让我们来分析一下例子4的代码。当我们拖动鼠标时(按着鼠标左键),我们就获得了鼠标拖动时的坐标,同时调用repaint()方法画下这个坐标点。我们已经知道,在小程序中调用repaint方法时,程序首先清除paint()方法以前所画的内容,然后再调用paint()方法。但有时我们不想让程序清除paint()方法以前所画的所有内容。实际上当我们调用
repaint()方法时,程序自动地调用update(Graphics g)方法(从父类Component继承下来的)清除paint()方法以前所画的内容,然后再调用paint方法。因此我们可以在我们的小程序中重写这个update(Graphics g)方法(即隐藏父类的方法),根据需要来清除哪些部分或保留哪些部分。在这个例子中,我们在updatte(Graphics g)方法体内没有清除以前所画的内容(如果准备清除可使用clearrect方法,见17.4节)而是继续调用paint方法。受上面例子的启发,你可能已经想到,我们可以通过画实心圆来改变线条的粗细。下面是一个略微复杂的例子mouse5.java。在这个例子中我们可以控制线条的颜色,而且我们还可以使用橡皮擦掉所画的图形。稍加改进就可以控制线条的粗细,另外还可以使用上一节介绍的方法控制鼠标的形状。
18.3 鼠标事件的转移
假如我们正监视一个容器上的鼠标事件,而容器中添加了一些组件,则当在组件上进行单击鼠标、移动鼠标等操作时,容器将不知道这些操作的发生。
可以使用鼠标事件的转移将一个事件源发生的鼠标事件转移到另一个事件源上,也就是说,当用户的在某个事件源上单击鼠标时,可以通过鼠标事件的转移导致另一个事件源上发生鼠标事件(声东击西)。使用javax.swing包中的SwingUtilities类的静态方法:
MouseEvent convertMouseEvent(Component source,MouseEvent sourceEvent,Component destination)
可以将source组件上发生的鼠标事件转移到组件destination,该方法返回转移后的鼠标事件。 在下面的例子mouse6.java中,用户单击一个按钮,然后拖动鼠标移动按钮的位置,观察鼠标事件的转移。
18.4 键盘事件
当按下、释放或敲击键盘上一个键时就发生了键盘事件,在Javal.2事件模式中,必须要有发生事件的事件源。当一个组件处于激活状态时,敲击键盘上一个键就导致这个组件上发生了键盘事件。
事件源使用addKeyListener(监视器)方法获得监视器。
监视器是一个对象,创建该对象的类必须实现接口KeyListener。接口KeyListener中有3个方法:
public void keyPressed(KeyEvent e)
public void keyTyped(KeyEvent e)
public void KeyReleased(KeyEvent e)
当你按下键盘上某个键时,监视器就会发现,然后方法keyPressed方法会自动执行,并且KeyEvet类自动创建一个对象传递给方法keyPressed中的参数e。方法keyTyped是keyPressed和keyReleased方法的组合,当键被按下又释放时,keyTyped方法被调用。用KeyEvent类的public int getKeyCode()方法,可以判断哪个键被按下、敲击或释放,getKeyCode方法返回一个键码值(如表所示)。也可以用KeyEvent类的public char getKeyChar()判断哪个键被按下、敲击或释放,getKeyChar方法返回键的字符。
2.走迷宫程序
下面是用键盘实现的走迷宫程序。走迷宫需要将一个物体(用一个按钮表示)限制在一定的区域内行走,这里要用到14章讲过的Rectangle(矩形)类(见14.3节)。
我们可以使用若干个矩形对象进行互相交叉形成迷宫(为了简化代码,例子中的迷宫是很简单的)。我们通过Grapghics对象的fillRect方法画出这个迷宫。用一个按钮代表走迷宫者,由于按钮是个矩形形状的组件,因此我们可以根据按钮的形状创建一个和按钮相关的矩形对象,当这个矩形对象和代表迷宫的矩形对象满足相交条件时,按钮根据键盘事件在迷宫里走来走去。例子key2.java
习题
完善画图的例子,要求能改变“画笔”的粗细及橡皮擦的大小。
进一步改进例子key1.java,要求一个按钮在移动时,不允许和其他按钮相交。
上机实习下列程序,掌握复合键的使用。
任何组件上都可以发生鼠标事件,如:鼠标进入组件、退出组件、在组件上方单击鼠标、拖动鼠标等都发生鼠标事件,也就是说,组件可以成为发生鼠标事件的事件源。
18.1 使用MouseListener接口处理鼠标事件
使用MouseListener接口可以处理5种操作发生的鼠标事件:
(1)在事件源上按下鼠标键。mousePressed(MouseEvent )
(2)在事件源上释放鼠标键。mouseReleased(MouseEvent )
(3)在事件源上点击鼠标键。 mouseClicked(MouseEvent )
(4)鼠标进入事件源。 mouseEntered(MouseEvent )
(5)鼠标退出事件源。 mouseExit(MouseEvent )
鼠标事件的类型是MouseEvent,即当发生鼠标事件时,MouseEvent类自动创建一个事件对象。
MouseEvent类中有下列几个重要的方法:
(1)getX() 获取鼠标在事件源坐标系中的x坐标。
(2)getY() 获取鼠标在事件源坐标系中的y坐标。
(3)getModifiers() 获取鼠标的左键或右键。鼠标的左键和右键分别使用InputEvent类中的常量BUTTONl_MASK和BUTTON3_MASK来表示
(4)getClickCount() 获取鼠标被单击的次数。
(5)getSource() 获取发生鼠标事件的事件源。
事件源获得监视器的方法是addMouseListener(监视器)。
MouseListener接口中有如下方法:
(1)mousePressed(MouseEvent) 负责处理鼠标按下事件。即,当你在事件源按下鼠标时,监视器发现这个事件后将自动调用接口中的这个方法对事件作出处理。
(2)mouseReleased(MouseEvent) 负责处理鼠标释放事件。即,当你在事件源释放鼠标时,监视器发现这个事件后将自动调用接口中的这个方法对事件作出处理。
(3)mouseEntered(MouseEvent) 负责处理鼠标进入事件源事件。即,当鼠标进入时,监视器发现这个事件后将自动调用接口中的这个方法对事件作出处理。
(4)mouseExited(MouseEvent) 负责处理鼠标离开事件。即,当鼠标离开容器时,监视器发现这个事件后将自动调用接口中的这个方法对事件作出处理。
(5)mouseClicked(MouseEvent) 负责处理点击鼠标事件。即,当鼠标被单击时,监视器发现这个事件后将自动调用接口中的这个方法对事件作出处理。
现在我们给出一个小程序mouse1.java,在这个小程序中有一个文本框,它负责记录鼠标事件。当鼠标进入小程序时,文本区显示甲鼠标进来了”;当鼠标离开时,文本区显示“鼠标走开了”;当鼠标被按下时,文本区显示“鼠标按下了”,并显示鼠标的坐标。
在下面例子mouse2.java中,当在画布上按下鼠标左键时,在鼠标位置处绘制一个圆;当按下鼠标右键时,在鼠标位置处绘制一个矩形:当鼠标退出画布时,清除绘制的全部图形。
下面的例子mouse3.java分别监视按钮、文本框和容器上的鼠标事件,当发生鼠标事件时,获取鼠标的坐标值,注意,事件源的坐标系的左上角是坐标源点
18.2 使用MouseMotionListener接口处理鼠标事件
使用MouseMotionListener接口可以处理两种操作发生的鼠标事件:
(1)在事件源上拖动鼠标。
(2)在事件源上移动鼠标。
鼠标事件的类型是MouseEvent,即当发生鼠标事件时,MouseEvent类自动创建一个事件对象。 事件源获得监视器的方法是addMouseMotionListener(监视器)。
MouseMotionListener接口中有如下方法:
(1)mouseDragged(MouseEvent) 负责处理鼠标拖动事件。即,当你在事件源拖动鼠标时,监视器发现这个事件后将自动调用接口中的这个方法对事件作出处理。
(2)mouseMoved(MouseEvent) 负责处理鼠标移动事件。即,当你在事件源移动鼠标时,监视器发现这个事件后将自动调用接口中的这个方法对事件作出处理。
在这里我们也提供一个非常简单的用鼠标作画的小程序mouse4.java。我们的想法很简单,只要我们能用鼠标画点,那么就可以用鼠标自由作画了。我们已经会用drawLine(int x1,int yl,int x2,int y2)画从点(x1,y1)到点(x2,y2)的直线,那么当直线的起点和终点相同时,就画出了一个点。
现在让我们来分析一下例子4的代码。当我们拖动鼠标时(按着鼠标左键),我们就获得了鼠标拖动时的坐标,同时调用repaint()方法画下这个坐标点。我们已经知道,在小程序中调用repaint方法时,程序首先清除paint()方法以前所画的内容,然后再调用paint()方法。但有时我们不想让程序清除paint()方法以前所画的所有内容。实际上当我们调用
repaint()方法时,程序自动地调用update(Graphics g)方法(从父类Component继承下来的)清除paint()方法以前所画的内容,然后再调用paint方法。因此我们可以在我们的小程序中重写这个update(Graphics g)方法(即隐藏父类的方法),根据需要来清除哪些部分或保留哪些部分。在这个例子中,我们在updatte(Graphics g)方法体内没有清除以前所画的内容(如果准备清除可使用clearrect方法,见17.4节)而是继续调用paint方法。受上面例子的启发,你可能已经想到,我们可以通过画实心圆来改变线条的粗细。下面是一个略微复杂的例子mouse5.java。在这个例子中我们可以控制线条的颜色,而且我们还可以使用橡皮擦掉所画的图形。稍加改进就可以控制线条的粗细,另外还可以使用上一节介绍的方法控制鼠标的形状。
18.3 鼠标事件的转移
假如我们正监视一个容器上的鼠标事件,而容器中添加了一些组件,则当在组件上进行单击鼠标、移动鼠标等操作时,容器将不知道这些操作的发生。
可以使用鼠标事件的转移将一个事件源发生的鼠标事件转移到另一个事件源上,也就是说,当用户的在某个事件源上单击鼠标时,可以通过鼠标事件的转移导致另一个事件源上发生鼠标事件(声东击西)。使用javax.swing包中的SwingUtilities类的静态方法:
MouseEvent convertMouseEvent(Component source,MouseEvent sourceEvent,Component destination)
可以将source组件上发生的鼠标事件转移到组件destination,该方法返回转移后的鼠标事件。 在下面的例子mouse6.java中,用户单击一个按钮,然后拖动鼠标移动按钮的位置,观察鼠标事件的转移。
18.4 键盘事件
当按下、释放或敲击键盘上一个键时就发生了键盘事件,在Javal.2事件模式中,必须要有发生事件的事件源。当一个组件处于激活状态时,敲击键盘上一个键就导致这个组件上发生了键盘事件。
事件源使用addKeyListener(监视器)方法获得监视器。
监视器是一个对象,创建该对象的类必须实现接口KeyListener。接口KeyListener中有3个方法:
public void keyPressed(KeyEvent e)
public void keyTyped(KeyEvent e)
public void KeyReleased(KeyEvent e)
当你按下键盘上某个键时,监视器就会发现,然后方法keyPressed方法会自动执行,并且KeyEvet类自动创建一个对象传递给方法keyPressed中的参数e。方法keyTyped是keyPressed和keyReleased方法的组合,当键被按下又释放时,keyTyped方法被调用。用KeyEvent类的public int getKeyCode()方法,可以判断哪个键被按下、敲击或释放,getKeyCode方法返回一个键码值(如表所示)。也可以用KeyEvent类的public char getKeyChar()判断哪个键被按下、敲击或释放,getKeyChar方法返回键的字符。
2.走迷宫程序
下面是用键盘实现的走迷宫程序。走迷宫需要将一个物体(用一个按钮表示)限制在一定的区域内行走,这里要用到14章讲过的Rectangle(矩形)类(见14.3节)。
我们可以使用若干个矩形对象进行互相交叉形成迷宫(为了简化代码,例子中的迷宫是很简单的)。我们通过Grapghics对象的fillRect方法画出这个迷宫。用一个按钮代表走迷宫者,由于按钮是个矩形形状的组件,因此我们可以根据按钮的形状创建一个和按钮相关的矩形对象,当这个矩形对象和代表迷宫的矩形对象满足相交条件时,按钮根据键盘事件在迷宫里走来走去。例子key2.java
习题
完善画图的例子,要求能改变“画笔”的粗细及橡皮擦的大小。
进一步改进例子key1.java,要求一个按钮在移动时,不允许和其他按钮相交。
上机实习下列程序,掌握复合键的使用。
参考资料: 转载自 以下 空间:http://chaoloveyou.blog.hexun.com/6724529_d.html
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询