SWT_AWT.new_Frame:当窗口移动时,JComboBox永远不会失去焦点

时间:2012-06-11 14:39:04

标签: java focus swt awt

在嵌入式框架中使用JComboBox时,我确实有一个奇怪的焦点问题。

我创建了一个像

这样的新Shell
shell = new Shell(display.getActiveShell(), SWT.SHELL_TRIM | SWT.APPLICATION_MODAL);

用于创建嵌入式框架的shell,如

    Composite contentComposite = new Composite(parent, SWT.EMBEDDED);
    contentComposite.setLayout(new FillLayout());

    frame = SWT_AWT.new_Frame(contentComposite);
    rootPanel = new Panel();
    rootPanel.setLayout(new BorderLayout());
    frame.add(rootPanel);

我在rootPanel中添加了一个JComboBox(带有2个元素)。 当我选择ComboBox打开下拉菜单时,我可以拖放shell窗口,而不会丢失组合框中的焦点。

当shell窗口移动到另一个屏幕区域时,下拉菜单仍然在屏幕上的相同位置。下拉菜单不再显示在组合框下方。

我试图为一些组件添加一个焦点监听器,但是焦点不会丢失在组合框上而不会在shell上获得。

那么当移动shell或获得焦点时,如何隐藏组合框的弹出窗口。

1 个答案:

答案 0 :(得分:1)

在他的评论中描述Andrew Thompson后,3个不同的UI库不是最佳选择,我开始尝试AWT Choice类。

当选择shell窗口时,这些类正在失去焦点。

所以看起来,在嵌入式AWT对象中不能轻易使用swing,但我还没有看到它。