Button 点击事件报告怎么写怎么写

[转载]java处理按钮点击事件
不同的事件源可以产生不同类别的事件。例如,按钮可以发送一个ActionEvent对象,而窗口可以发送WindowEvent对象。
AWT时间处理机制的概要:
1.监听器对象是一个实现了特定监听器接口(listener interface)的类的实例。
2.事件源是一个能够注册监听器对象并发送事件对象的对象。
3.当事件发生时,事件源将事件对象传递给所有注册的监听器。
4.监听器对象将利用事件对象中的信息决定如何对事件做出响应。
下面是监听器的一个示例:
ActionListener listener = ...;
JButton button = new JButton("OK");
button.addActionListener(listener);
现在,只要按钮产生了一个“动作事件”,listener对象就会得到通告。对于按钮来说,正像我们想到的,动作事件就是点击按钮。
为了实现ActionListener接口,监听器类必须有一个被称为actionPerformed的方法,该方法接收一个ActionEvent对象参数。
class MyListener implements ActionListener
& public void actionPerformed(ActionEvent
&//reaction to button click goes here
只要用户点击了按钮,JButton对象就会创建一个ActionEvent对象,然后调用listener.actionPerformed(event)传递事件对象。可以将多个监听器对象添加到一个像按钮这样的事件源中。这样一来,只要用户点击按钮,按钮就会调用所有监听器的actionPerformed方法。
实例:处理按钮点击事件
为了加深对事件委托模型的理解,下面以一个响应按钮点击事件的简单示例来说明所需要知道的细节。在这个示例中,想要在一个面板中放置三个按钮,添加三个监听器对象用来作为按钮的动作监听器。
在这个情况下,只要用户点击面板上的任何一个按钮,相关的监听器对象就会接收到一个ActionEvent对象,它表示有个按钮被点击了。在示例程序中,监听器对象将改变面板的背景颜色。
在演示如何监听按钮点击事件之前,首先需要讲解一下如何创建按钮以及如何将他们添加到面板中。
可以通过在按钮构造器中指定一个标签字符串、一个图标或两项都指定来创建一个按钮。下面是两个示例:
JButton yellowButton = new JButton("Yellow");
JButton blueButton = new JButton(new
ImageIcon("blue-ball.gif"));
将按钮添加到面板中需要调用add方法:
JButton yellowButton = new JButton("Yellow");
JButton blueButton = new JButton("Blue");
JButton redButton = new JButton("Red");
buttonPanel.add(yellowButton);
buttonPanel.add(blueButton);
buttonPanel.add(redButton);
至此,知道了如何将按钮添加到面板上,接下来需要增加让面板监听这些按钮的代码。这需要一个实现了ActionListener接口的类。如前所述,应该包含一个actionPerformed方法,其签名为:
public void actionPerformed(ActionEvent event)
当按钮被点击时,希望将面板的背景颜色设置为指定的颜色。这个颜色存储在监听器类中:
class ColorAction implements ActionListener
& &public ColorAction(Color
backgroundColor =
& & public void
actionPerformed(actionEvent event)
& & & //set
panel background color
&private Color backgroundC
然后,为每种颜色构造一个对象,并将这些对象设置为按钮监听器。
ColorAction yelloAction = new ColorAction(Color.YELLOW);
ColorAction blueAction = new ColorAction(Color.BLUE);
ColorAction redAction = new ColorAction(Color.RED);
yellowButton.addActionListener(yellowAction);
blueButton.addActionListener(blueAction);
redButton.addActionListener(redAction);
例如,如果一个用户在标有“Yellow”的按钮上点击了一下,yellowAction对象的actionPerformed方法就会被调用。这个对象的backgroundColor实例域被设置为Color.YELLOW,现在就将面板的背景颜色设置为黄色。
这里还有一个需要考虑的问题。ColorAction对象不能访问buttonpanel变量。可以采用两种方式解决这个问题。一个是将面板存储在ColorAction对象中,并在ColorAction的构造器中设置它;另一个是将ColorAction作为ButtonPanel类的内部类,如此,它的方法就自动地拥有访问外部面板的权限了。
下面说明一下如何将ColorAction类放在ButtonFrame类内。
class ButtonFrame extends JFrame
& private class ColorAction implents
ActionListener
& & public void
actionPerformed(ActionEvent event)
&buttonPanel.setBackground(backgroundColor);
& & private Color
backgroundC
& &private Jpanel
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。用心创造滤镜
扫码下载App
汇聚2000万达人的兴趣社区下载即送20张免费照片冲印
扫码下载App
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
坚持走自己的路,让别人打车去追吧
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(4871)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_086071',
blogTitle:'Ext.Button点击事件的三种写法',
blogAbstract:'ExtJs的写法太灵活了,现在收集了关于Button点击事件的三种写法。今天做一个记录,以后备查。\r\n首先创建一个JS文件写入以下代码:\r\n1.点击默认为handler\r\nExt.onReady(function(){\r\n&&&&&&&&&&&\r\n\r\n&&&&&&&&&&&\r\nnew Ext.Button({\r\n&&&&&&&&&&&&&&&\r\ntext:',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:5,
permalink:'blog/static/',
commentCount:3,
mainCommentCount:2,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'坚持走自己的路,让别人打车去追吧',
hmcon:'0',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}从Listview与Button点击事件冲突看安卓点击事件分发机制 - 推酷
从Listview与Button点击事件冲突看安卓点击事件分发机制
题目有点长。其实实现Listview的时候大家都可能会碰到这样的一个问题,那就是Listview的OnItemClickListener点击事件与Button(或者checkbox)的touch(或者click)事件冲突的问题。
声明一下,非常感谢郭大师的这篇blog:
http://blog.csdn.net/guolin_blog/article/details/9097463
原理参考了这篇blog,事实上也是本人功力不够不能阅读源码的缺陷啊。
下面说下自己的解决步骤:
1)首先先set一下button的焦点,button是会抢占Listview的焦点的。
replyBt.setFocusable(false)
我这样写就可以解决抢占焦点的问题了。
2)重写Button类,复写dispatchTouchEvent方法。
首先我们得要知道,点击事件首先是被Listview接收然后才传到Button的,如果中间某一个地方把点击事件消费掉了后面就再也不能接收到了。
我们需要接收到Button的click事件,那么什么时候click会被调用呢?
public boolean dispatchTouchEvent(MotionEvent event) {
if (mOnTouchListener != null && (mViewFlags & ENABLED_MASK) == ENABLED &&
mOnTouchListener.onTouch(this, event)) {
return onTouchEvent(event);
这是系统的dispatchTouchEvent源码,这个函数负责该view点击事件的分发,click事件是在onTouchEvent里面调用的,我们首先要先知道什么时候会调用dispatchTouchEvent这个函数呢?
其实只要在这个view上有一个点击操作都会触发这个函数的,这个点击操作包括:手指按下,移动手指,抬起手指
其中移动手指会多次触发这个函数。
public boolean dispatchTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
//super.dispatchTouchEvent(event);
System.out.println(&disdis&);
//performClick();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
System.out.println(&disdis&);
这是我随便写的一个测试代码,正常的一次点击会触发3次这个函数(按下,移动,抬起)
既然知道这件事情,我们就需要这样想:我们总不能在手指只要在这个view有操作都多次调用这个函数吧。
所以最后我只在按下的时候才调用click的函数。
那接着探讨下一个问题:怎么调用click函数呢?
通过上面我推荐的那篇blog,我们知道最后调用这个函数的是在performClick这个函数里面,由于我不关心其他点击事件,所以我就这么写了:
public boolean dispatchTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
performClick();
注意一下返回值,我返回true意思是这个函数消费了点击事件,因为这次点击事件是在这里被消费掉的,所以最好返回true,不然的话不知道会出现什么错误呢。
下面是我的整个重写的Button类:
package com.example.
import android.content.C
import android.util.AttributeS
import android.view.MotionE
import android.widget.B
public class MyButton extends Button {
public MyButton(Context context) {
// TODO Auto-generated constructor stub
super(context);
public MyButton(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
public boolean dispatchTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
performClick();
在其他Activity中设置onClick:
holder.replyBt.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(ForumMain.this,
ForumReply.class);
String topicId = info.TopicID;
intent.putExtra(&topicId&, topicId);
startActivity(intent);
已发表评论数()
已收藏到推刊!
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
排版有问题
没有分页内容
视频无法显示
图片无法显示Android学习笔记(3)——按钮点击注册事件的四种写法 - 推酷
Android学习笔记(3)——按钮点击注册事件的四种写法
Android下,按钮点击事件是在开发过程中经常会写到的东西。这里总结一下常见的四种写法:
界面代码就是一个button控件:
&RelativeLayout xmlns:android=&/apk/res/android&
xmlns:tools=&/tools&
android:layout_width=&match_parent&
android:layout_height=&match_parent&
android:paddingBottom=&@dimen/activity_vertical_margin&
android:paddingLeft=&@dimen/activity_horizontal_margin&
android:paddingRight=&@dimen/activity_horizontal_margin&
android:paddingTop=&@dimen/activity_vertical_margin&
tools:context=&com.xgezhang.setonclick4ways.MainActivity& &
android:id=&@+id/button1&
android:layout_width=&wrap_content&
android:layout_height=&wrap_content&
android:text=&Button& /&
&/RelativeLayout&
1.通过匿名内部类实现监听类:
public class MainActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button bt = (Button) findViewById(R.id.button1);
bt.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Toast tst = Toast.makeText(MainActivity.this, &way1&, Toast.LENGTH_SHORT);
tst.show();
2.自定义一个个内部类,实现接口函数:
public class MainActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button bt = (Button) findViewById(R.id.button1);
bt.setOnClickListener(new MyOnClickListener());
class MyOnClickListener implements OnClickListener{
public void onClick(View v) {
// TODO Auto-generated method stub
Toast tst = Toast.makeText(MainActivity.this, &way2&, Toast.LENGTH_SHORT);
tst.show();
上述两种方法麻烦之初在于,如果有很多的Button,那么就需要对每一个Button都写一个类,代码比较复杂。
3.让MainActivity实现接口函数,通过switch语句判断R.id,来对不同的Button按钮做出不同的响应。
public class MainActivity extends Activity implements OnClickListener{
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button bt = (Button) findViewById(R.id.button1);
bt.setOnClickListener(this);
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.button1:
Toast tst = Toast.makeText(MainActivity.this, &way3&, Toast.LENGTH_SHORT);
tst.show();
4.在XML文件中“显式指定按钮的onClick属性,点击按钮时会利用反射的方式调用对应Activity中的click()方法:
XML文件添加一行:
android:onClick=&onClick&
对应Java代码:
public class MainActivity extends Activity{
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
public void onClick(View v) {
// TODO Auto-generated method stub
Toast tst = Toast.makeText(this, &way4&, Toast.LENGTH_SHORT);
tst.show();
当然,第四种方法也可以通过switch语句判断哪一个Button被点击。在实际开发过程中,使用最多的是第三种方法。
已发表评论数()
已收藏到推刊!
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
排版有问题
没有分页内容
视频无法显示
图片无法显示flex button 事件上面一个textinput 下面是多个Button 点击Button
textinput里面的内容就是button的text。需要连续点击button
这个事件怎么写?
private function ButtonClick():void{
_百度作业帮
flex button 事件上面一个textinput 下面是多个Button 点击Button
textinput里面的内容就是button的text。需要连续点击button
这个事件怎么写?
private function ButtonClick():void{
flex button 事件上面一个textinput 下面是多个Button 点击Button
textinput里面的内容就是button的text。需要连续点击button
这个事件怎么写?

我要回帖

更多关于 护理不良事件怎么写 的文章

 

随机推荐