关于事件源的应用

今天被画图板的一个鼠标右键单击处理事件的事情搞得晕头转向的,为了让鼠标左键点击和右键点击在画图面板上设置不同的景色,也就是前景色和背景色。按理来说只需要点击时获取点击的按钮颜色,然后再在需要展示的按钮上设置相关的背景色setBackground();即可,不过这里有一点麻烦:我给每个颜色按钮添加了动作监听器addActionListener();当我的鼠标左键点击时完全是没有问题的,能够在ActionPerformed()里获取点击的按钮的相关信息,在进行操作,但是这方法到了右键就出问题了啊,首先是我打算在ActionPerformed()里面直接运用判别句来对鼠标不同键进行监听:
if(e.getButton()==e.BUTTON1){
*******************
}
else{
*******************
}
但是试图用过的人都知道这肯定是错的,因为ActionListener是监听动作的,和界面组件有关,所以它里面是绝对不可能有什么和鼠标相关的e.getButton()的方法的。


所以,我就迫不得已的转战将ActionPerformed里面的代码移到了MouseClicked里面,然后只留下一个按下按钮返回的值方法,但是这又有一个问题了,当鼠标右键点击按钮时,程序不会执行ActionPerformed里面的方法,也就是说得不到按钮的返回值,也就无法设置颜色了。


正在我纠结之时,在这关键时刻,好戏就要登场了,这就是今天要介绍的事件源的应用,再次得多谢熊哥,这个方法是他提醒我的,具体代码如下:

if(e.getButton()==e.BUTTON1){
jb1.setBackground(color);
}
else{
Object sour = e.getSource();
if(sour instanceof JButton){
JButton bu = (JButton)sour;
int n = Integer.parseInt(bu.getActionCommand());
jb2.setBackground(str[n]);
}
}

如果是左键单击,就直接能返回值,然后直接.setBackground(color);否则认定为右键(注:滑轮不考了,当右键吧,一般也没多少人会点那玩意),然后就对点击返回一个事件源了,如果点击的是按钮,则怎么样怎么样.....,中间过程我也不是很明白,就不细讲了,反正利用这种方法是能够得到按钮的返回值的,最后通过设定的颜色数组str[]来设置颜色,就大功告成了~~~~!!!


写在片尾:以上只是一种解决该问题的方法,至于其他能够实现的方法,肯定是有的,比如说我们一组的黄高乐就已经实现了这种方法,不过他给我讲的我还是不怎么明白,但是大概我应该也能觉得他用的是另一种方法。欢迎大家多多指教~~~
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值