在eclipse SWT中,当你可以为控件添加多个样式时,它会派上用场。工具栏可以添加多个样式。工具项目不能享有同样的特权吗?解决方案的工作是什么?
ToolItem API明确指出
只有一种样式CHECK,PUSH,RADIO,SEPARATOR和DROP_DOWN可以 指定。
基本上,我希望有一个工具栏项,就像一个带下拉列表的单选按钮。我希望用户能够从其下拉列表中的项目列表中更改项目的默认操作。
有人可以指出我正确的方向吗?
...
ToolBar toolBar = new ToolBar(composite, SWT.FLAT | SWT.RIGHT | SWT.HORIZONTAL);
ToolItem item1 = new ToolItem(toolBar, SWT.RADIO);
item1.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
// do something
}
});
item1.setImage(image1);
ToolItem item2 = new ToolItem(toolBar, SWT.RADIO | STW.DROP_DOWN); //only allowed in my dreams
item2.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
// do a drop down action and lots more.
// change image of this ToolItem to match the drop down selection.
item2.setImage(selectedImage);
}
});
item2.setImage(image2);
答案 0 :(得分:1)
此snippet显示了如何创建下拉菜单。要获取单选按钮,请使用SWT.RADIO样式而不是SWT.PUSH作为MenuItems。
final ToolBar toolBar = new ToolBar (shell, SWT.NONE);
Rectangle clientArea = shell.getClientArea ();
toolBar.setLocation(clientArea.x, clientArea.y);
final Menu menu = new Menu (shell, SWT.POP_UP);
for (int i=0; i<8; i++) {
MenuItem item = new MenuItem (menu, SWT.PUSH);
item.setText ("Item " + i);
}
final ToolItem item = new ToolItem (toolBar, SWT.DROP_DOWN);
item.addListener (SWT.Selection, new Listener () {
public void handleEvent (Event event) {
if (event.detail == SWT.ARROW) {
Rectangle rect = item.getBounds ();
Point pt = new Point (rect.x, rect.y + rect.height);
pt = toolBar.toDisplay (pt);
menu.setLocation (pt.x, pt.y);
menu.setVisible (true);
}
}
});
toolBar.pack ();