【发布时间】:2011-07-19 00:22:25
【问题描述】:
如何像 Eclipse 一样使用 JFace/SWT 制作可拖动/可停靠的工具栏?您能否发布一个简单的 ApplicationWindow 示例或链接如何制作它的好来源。
谢谢。
【问题讨论】:
如何像 Eclipse 一样使用 JFace/SWT 制作可拖动/可停靠的工具栏?您能否发布一个简单的 ApplicationWindow 示例或链接如何制作它的好来源。
谢谢。
【问题讨论】:
SWT 有一个名为 CoolBar 的组件,您可以使用以下方法轻松创建 CoolBars CoolBarManager,或者您可以手动使用它们 (API Doc)
【讨论】:
CoolBar/CoolBarManager 的建议,但我无法完成这项工作。你能发布一个ApplicationWindow 和CoolBar 的简单示例,或者链接如何使用它的好示例吗?
如果有人发现这个问题,我准备了一个小例子。我的问题是不正确使用add 方法。您必须使用来自CoolBarManager 的add(IToolBarManager toolBarManager) 方法,而不是来自基类ContributionManager 的方法之一。
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.CoolBarManager;
import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jface.action.ToolBarManager;
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class App extends ApplicationWindow {
public App(Shell parent) {
super(parent);
}
@Override
protected Control createContents(Composite parent) {
getShell().setText("CoolBarManager example");
return super.createContents(parent);
}
@Override
public void create() {
addCoolBar(SWT.FLAT);
super.create();
}
@Override
protected CoolBarManager createCoolBarManager(int style) {
CoolBarManager cbm = new CoolBarManager(style);
IToolBarManager tb1 = new ToolBarManager(style);
IToolBarManager tb2 = new ToolBarManager(style);
tb1.add(new Action() {
{
setText("&Button1");
}
});
tb1.add(new Action() {
{
setText("&Button2");
}
});
tb1.add(new Action() {
{
setText("&Button3");
}
});
tb2.add(new Action() {
{
setText("&Button4");
}
});
tb2.add(new Action() {
{
setText("&Button5");
}
});
cbm.add(tb1);
cbm.add(tb2);
return cbm;
}
public static void main(String[] args) {
App app = new App(null);
app.setBlockOnOpen(true);
app.open();
Display.getCurrent().dispose();
}
}
【讨论】: