【问题标题】:Draggable toolbar可拖动工具栏
【发布时间】:2011-07-19 00:22:25
【问题描述】:

如何像 Eclipse 一样使用 JFace/SWT 制作可拖动/可停靠的工具栏?您能否发布一个简单的 ApplicationWindow 示例或链接如何制作它的好来源。

谢谢。

【问题讨论】:

    标签: java swt draggable jface


    【解决方案1】:

    SWT 有一个名为 CoolBar 的组件,您可以使用以下方法轻松创建 CoolBars CoolBarManager,或者您可以手动使用它们 (API Doc)

    【讨论】:

    • 您好,感谢您提出CoolBar/CoolBarManager 的建议,但我无法完成这项工作。你能发布一个ApplicationWindowCoolBar 的简单示例,或者链接如何使用它的好示例吗?
    【解决方案2】:

    如果有人发现这个问题,我准备了一个小例子。我的问题是不正确使用add 方法。您必须使用来自CoolBarManageradd(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();
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-23
      • 2015-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多