swt中多个button按钮注册同一个监听器,监听事件时如何区别是哪个按钮触发的事件?

问题描述

package test;import org.eclipse.swt.widgets.Display;import org.eclipse.swt.widgets.Shell;import org.eclipse.swt.widgets.Button;import org.eclipse.swt.SWT;import org.eclipse.wb.swt.SWTResourceManager;import org.eclipse.swt.events.SelectionAdapter;import org.eclipse.swt.events.SelectionEvent;public class SWTTest {protected Shell shell;/** * Launch the application. * @param args */public static void main(String[] args) {try {SWTTest window = new SWTTest();window.open();} catch (Exception e) {e.printStackTrace();}}/** * Open the window. */public void open() {Display display = Display.getDefault();createContents();shell.open();shell.layout();while (!shell.isDisposed()) {if (!display.readAndDispatch()) {display.sleep();}}}/** * Create contents of the window. */protected void createContents() {shell = new Shell();shell.setBackground(SWTResourceManager.getColor(SWT.COLOR_WHITE));shell.setSize(450, 300);shell.setText("SWT Application");Button btnA = new Button(shell, SWT.NONE);//为A按钮注册监听器btnA.addSelectionListener(new ButtonClickListener());btnA.setText("A");btnA.setImage(null);btnA.setBackground(SWTResourceManager.getColor(SWT.COLOR_WHITE)); btnA.setBounds(30, 51, 76, 56);Button btnB = new Button(shell, SWT.NONE);//为B按钮注册监听器btnB.addSelectionListener(new ButtonClickListener());btnB.setText("B");btnB.setImage(null);btnB.setBackground(SWTResourceManager.getColor(SWT.COLOR_WHITE));btnB.setBounds(129, 51, 76, 56);Button btnC = new Button(shell, SWT.NONE);//为C按钮注册监听器btnC.addSelectionListener(new ButtonClickListener());btnC.setText("C");btnC.setImage(null);btnC.setBackground(SWTResourceManager.getColor(SWT.COLOR_WHITE));btnC.setBounds(240, 51, 76, 56);}private final class ButtonClickListener extends SelectionAdapter {public void widgetSelected(SelectionEvent e) { if(条件1){ //响应按钮A的代码 }else if(条件2){ //响应按钮B的代码 }else if(条件3){ //响应按钮C的代码 }}}} 问题:条件1,条件2,条件3该如何写,才能判断是哪个按钮触发的事件?

解决方案

ButtonClickListener添加一个变量,添加含有该变量的构造方法,在按钮添加监听事件的时候传入参数做为该变量,在事件的if判断中判断该变量的值做不同的操作。

时间: 2024-11-01 08:40:09

swt中多个button按钮注册同一个监听器,监听事件时如何区别是哪个按钮触发的事件?的相关文章

java中循环添加按钮后 要添加监听这么区分按钮

问题描述 java中循环添加按钮后 要添加监听这么区分按钮 while(rs.next()){ String friendId=rs.getString(""friendid""); jb=new JButton(); jb.setText(friendId); jb.setBounds(10i10030); i=i+50; jsp.add(jb); } 这句话循环读数据库去除ID然后添加按钮,但是这么区分 我试验了下 监听只能最后一个按钮能行 其他不行 解决方案

Android开发20——单个监听器监听多个按钮点击事件

一.单个按钮点击事件的监听   方法一 /** * 从网络上获取图片 * * @author 徐越 * */ public class MainActivity extends Activity { private EditText txtPath; private Button btnShowImage; private ImageView imgView; @Override public void onCreate(Bundle savedInstanceState) { super.on

c#-C# 注册了一个快捷键Ctrl+一个数字键事件,只有同时按下才触发相应事件问题

问题描述 C# 注册了一个快捷键Ctrl+一个数字键事件,只有同时按下才触发相应事件问题 Blockquote C# 注册了一个快捷键Ctrl+一个数字键事件,如Ctrl+7,只有同时按下才触发响应事件,如果第一次同时按下Ctrl+7,事件触发了,Ctrl不放,再次按7,事件不触发,部分代码如下: _favKey = hotkeyHelper.RegisterHotkey(Keys.D7, HotkeyHelper.KeyFlags.MOD_CONTROL); //按键注册 hotkeyHelp

android 注册成功有监听吗

问题描述 android 注册成功有监听吗 解决方案 注册异步执行try catch 没有报异常的话,就注册成功了

libevent (三) 事件注册与循环监听

在libevent中为了监听某种事件的发生,设置事件触发后的回调函数,也就是说对该事件注册到当前的IO模型中. 事件注册 事件初始化 使用`event_new`函数来对事件进行初始化. typedef void (*event_callback_fn)(evutil_socket_t, short, void *);/* 回调函数 */ struct event *event_new(struct event_base *base, evutil_socket_t fd, short what,

Android中GIF动图的播放控制和监听详解

前言 最近接手的项目里涉及到了 GIF 动图的播放与监听,在上一版本中对于 GIF 的处理是由 H5 来实现的,因为考虑到用户体验,因此现在的需求是将这块儿原生化,途中差点误入歧途!下面来看看详细的介绍吧. Android 中 GIF 动图处理与监听 刚开始第一个想到的便是 glide , 但是自认为 glide 不能够控制 GIF 以及去监听它,所以网上去搜寻别的方法.看到有一个方案是将图片分帧,一张张的去用逐帧动画来实现. 我开始怀疑给这个解决方案的人了,都什么时代了还做这种费力不讨好,大量

java.awt.TextArea 中多行文本 设置鼠标右击的监听 确定是第几行 被右击

问题描述 我的TextArea是通过setText()把文本放进去,而文本是通过n进行换行的,现在我是想把某一行的文本 设置右击监听进行删除 对应行的文本,但是不知道如何确定是右击的哪一行. 请指点,谢谢. 解决方案 可以这样做:TextArea ta = new TextArea("Hello", 5, 40);//对TextArea增加鼠标事件监听ta.addMouseListener(new MouseListener(){public void mouseClicked(Mou

添加按钮和列表的监听程序

问题描述 importjava.awt.*;importjava.awt.event.*;importjava.io.File;importjava.io.IOException;importjava.io.*;//importjava.util.*;importjavax.swing.*;importjavax.swing.text.*;importjavax.imageio.ImageIO;importjavax.swing.JFrame;importjavax.swing.JPanel;i

代码-Android L QuickSetting中增加一个button

问题描述 Android L QuickSetting中增加一个button 按照MTK的提供的文档,我添加了一个按钮,代码是编译过了,但是重启没有没有效果,也没有错误日志,但是恢复出厂设置之后,就报了一个安全的异常, 解决方案 补上日志 Caused by: java.lang.ClassNotFoundException: Didn't find class "com.android.systemui.SystemUIApplication" on path: DexPathLis