swt点击按钮弹出下拉菜单

这个问题困扰了好久了,这次做出来其实也是参考了网上的一段代码。

其实也不难,就是两个组件:Button和Menu,然后给Button添加一个监听器,点击Button的时候弹出Menu。

说到这里问题来了,怎么弹出Menu?

我的处理方式是:

1.在监听器类里面new一个Menu,然后添加各个MenuItem子项

2.在点击按钮时获取按钮相对于父控件的的位置

这里涉及到两个方法:getBounds();//获取按钮区域

toDisplay(Point p);//获取用来定位之前所获取的相对坐标的点

3.在特定区域显示Menu

监听器的代码如下:

/**
 * 点击按钮弹出下拉菜单的监听器
 * @author Michael
 *
 */
class DropdownListener extends SelectionAdapter{
	
	private Button dropdown;
	private Menu menu;
	
	public DropdownListener(Button dropdown) {
		this.dropdown = dropdown;
		menu = new Menu(dropdown.getParent().getShell());
	}

	public void add(String item) {
		MenuItem menuItem = new MenuItem(menu, SWT.NONE);
		menuItem.setText(item);
		menuItem.addSelectionListener(new SelectionAdapter() {
			public void widgetSelected(SelectionEvent event) {
				// 选中子项的处理方法
				MenuItem item = (MenuItem) event.widget;
				
			}
		});
	}

	public void widgetSelected(SelectionEvent event) {
		// Determine where to put the dropdown list
		Button btn = (Button) event.widget;
		Rectangle rect = btn.getBounds();
		Point pt = btn.getParent().toDisplay(new Point(rect.x, rect.y));
		menu.setLocation(pt.x, pt.y + rect.height);
		menu.setVisible(true);
	}
}

然后给按钮添加该监听器。

用法如下:

Button actionButton = new Button(composite, SWT.PUSH);
actionButton.setText("Actions ");
DropdownListener actListener = new DropdownListener(actionButton);
actListener.add("item1");
actListener.add("item2");
actionButton.addSelectionListener(actListener);





  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值