问题:
界面上有一个向下的箭头按钮,点击这个按钮会在按钮上有菜单弹出,请教一下各位这个怎么实现啊?最好有点代码,谢谢啊!//向下的箭头按钮
final Button button = new Button(group, SWT.ARROW|SWT.DOWN);
//监听器,不知道需要不需要
button.addSelectionListener(new SelectionListener()
{
     public void widgetSelected(SelectionEvent event)
     {

     }     public void widgetDefaultSelected(SelectionEvent event)
     {

     }
});

解决方案 »

  1.   

    //向下的箭头按钮
    final Button button = new Button(group, SWT.ARROW|SWT.DOWN);
    //监听器,不知道需要不需要
    button.addSelectionListener(new SelectionListener()
    {
         public void widgetSelected(SelectionEvent event)
         {
    Button btn = (Button)event.getSource();
    Menu popupMenu = new Menu(btn);
    MenuItem menuItem = new MenuItem(popupMenu,SWT.NONE);
    menuItem.setText("test");
    btn.setMenu(popupMenu); popupMenu.setVisible(true);
         }     public void widgetDefaultSelected(SelectionEvent event)
         {
                    
         }
    });
      

  2.   

    据我所知好象swt没有那样的实现,你可以在事件中处理一下,点击了按钮就显示一个容器在下面,容器里放你的菜单
      

  3.   

    容器里放?那容器不是有边框了吗?有窗口什么的  那是很难看的啊 没法接受的不管怎么样,如果JFACE能实现也可以,那如何实现呢?我先去试一下上面那位的代码。
      

  4.   

    2楼 qingkangxu 是对的。 呵呵 但是弹出这个只有1级,那么多级的是怎么样的啊?
      

  5.   


    Button btn = (Button)event.getSource();
    Menu popupMenu = new Menu(btn);

    Menu mainMenu = new Menu(shell,SWT.DROP_DOWN);
    MenuItem mainMenuItem = new MenuItem(popupMenu,SWT.CASCADE);
    mainMenuItem.setText("test1");
    mainMenuItem.setMenu(mainMenu);

    MenuItem menuItem2 = new MenuItem(mainMenu,SWT.NONE);
    menuItem2.setText("test2");
    MenuItem menuItem3 = new MenuItem(mainMenu,SWT.NONE);
    menuItem3.setText("test3");

    btn.setMenu(popupMenu);
    popupMenu.setVisible(true);
    注意这句:
    Menu mainMenu = new Menu(shell,SWT.DROP_DOWN);
    shell把你最外层的Shell 声明成final就行。
      

  6.   


    public void widgetSelected(SelectionEvent event) {
    Button btn = (Button)event.getSource();
    Menu popupMenu = new Menu(btn);

    Menu mainMenu = new Menu(shell,SWT.DROP_DOWN);
    MenuItem mainMenuItem = new MenuItem(popupMenu,SWT.CASCADE);
    mainMenuItem.setText("test1");
    mainMenuItem.setMenu(mainMenu);

    MenuItem menuItem2 = new MenuItem(mainMenu,SWT.NONE);
    menuItem2.setText("test2");
    MenuItem menuItem3 = new MenuItem(mainMenu,SWT.NONE);
    menuItem3.setText("test3");

    btn.setMenu(popupMenu);
    popupMenu.setVisible(true);
    }
    注意这句: 
    Menu mainMenu = new Menu(shell,SWT.DROP_DOWN); 
    shell把你最外层的Shell 声明成final就行。 
      

  7.   

    我都整成final了还是不行,写什么都是错误,后来放到一个最简单的main()里面 ,把shell都搞成final才出来的,还挺好使。还想问一下,怎么让这些菜单被点击后执行动作呢?就像窗口最上面的菜单一样,点那些菜单有可能弹出对话框什么的,这怎么弄啊?先谢谢你。
      

  8.   


    是为其添加action吗?就像为窗口最上面菜单那样做个action,然后regist(action)然后add吗?
      

  9.   

    给MenuItem加监听就行了
    比如: menuItem2.addSelectionListener(new SelectionListener(){
    public void widgetDefaultSelected(SelectionEvent event) {
    } public void widgetSelected(SelectionEvent event) {
    //在这里做你想做的事情,以下只是例子
    MenuItem sourceItem = (MenuItem)event.getSource();
    String name = sourceItem.getText();
    System.out.println("I am button:"+name);
    }

    });
      

  10.   

    感觉lz基础的都没弄懂就开始动手了,你先看看Menu的用法就不会问了
    ----------------------------------------------------------
    Quietly through ....
      

  11.   

    我就是没弄懂 我的第一个RCP共享软件快发布了 差个别功能了 急没办法 没经验 所以才问