SWT下拉菜单按钮视觉故障

时间:2013-11-29 20:19:52

标签: java drop-down-menu swt visual-glitch

我在工具栏中的两个下拉菜单中遇到了视觉故障。当我:

  1. 将鼠标指针滚动到File下拉菜单按钮...

    enter image description here

  2. 滚动到Options下拉菜单按钮...

    enter image description here

  3. 完全滚出工具栏...

    enter image description here

  4. “文件”下拉按钮仍然会突出显示,但它似乎并不是焦点。如果您从Options滚动到File然后关闭工具栏,则会在“选项”下拉菜单中执行此操作。

    以下是创建ToolBarToolItems

    的代码
    final ToolBar toolBar = new ToolBar (mainshell, SWT.DROP_DOWN);
    toolBar.setSize(200,35);
    toolBar.setLocation(0,0);
    
    ToolItem File = new ToolItem(toolBar, SWT.DROP_DOWN);
    File.setText("File");
    final Menu FdropMenu = new Menu(mainshell, SWT.POP_UP);
    File.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e1) {
            if (e1.detail == SWT.ARROW) {
                final ToolItem FtoolItem = (ToolItem) e1.widget;
                final ToolBar  FtoolBar = FtoolItem.getParent();
                Point point = FtoolBar.toDisplay(new Point(e1.x, e1.y));
                FdropMenu.setLocation(point.x, point.y);
                FdropMenu.setVisible(true);
            } 
        }
    }); 
    
    final MenuItem SaveMI = new MenuItem(FdropMenu, SWT.PUSH);
    final MenuItem OpenMI = new MenuItem(FdropMenu, SWT.PUSH);
    
    ToolItem itemDrop = new ToolItem(toolBar, SWT.DROP_DOWN);
    itemDrop.setText("Options");
    final Menu dropMenu = new Menu(mainshell, SWT.POP_UP);
    itemDrop.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            if (e.detail == SWT.ARROW) {
                final ToolItem toolItem = (ToolItem) e.widget;
                final ToolBar  toolBar = toolItem.getParent();
                Point point = toolBar.toDisplay(new Point(e.x, e.y));
                dropMenu.setLocation(point.x, point.y);
                dropMenu.setVisible(true);
            } 
        }
    }); 
    

    我不确定这是我编程中的错误还是SWT中的错误。任何支持将不胜感激。

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。我发现如果我在SWT.FLAT构造函数中使用ToolBar样式参数,则此问题会消失。 在代码中使用此构造函数:

ToolBar toolBar = new ToolBar( parent, SWT.FLAT );