当前位置: 首页 > 知识库问答 >
问题:

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

邵昆琦
2023-03-14

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

我创建了一个新的Shell

shell = new Shell(display.getActiveShell(), SWT.SHELL_TRIM | SWT.APPLICATION_MODAL);

我用来创建嵌入式框架的外壳,如

    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);

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

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

我试图为某些组件添加焦点侦听器,但焦点不会在组合框中丢失,也不会在shell上获得。

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

共有1个答案

任伟
2023-03-14

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

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

所以看起来,在嵌入式AWT对象中,摆动不能那么容易地使用,但原因我还没有看到。

 类似资料:
  • 下面是代码片段,我在其中使用了基于翻滚事件时间的窗口 不幸的是,它似乎从未执行过reduce函数。如果使用上面的代码进行窗口处理,reduce函数可以正常工作。下面是时间戳提取器的代码。30秒水印延迟仅用作测试值,但一分钟翻转窗口为m bd.longValue(),它返回秒时间戳1498658629,因为我的窗口也是以秒为单位定义的。< br >当我使用返回分钟时间戳的bd.longValue()

  • 我有一个组件包装在HOC,我想实现我的编辑器的验证。 如果我开始在我的编辑器文本字段中输入,它会触发函数,该函数反过来改变本地状态并启动组件的重新渲染 每次组件重新命名时,我的文本字段都会失去焦点,因此我必须在字段内单击以键入另一个字母。我注意到只有当

  • 在我的活动中,我有一个editText字段。当用户点击它时,editText获得焦点并出现键盘。现在,当用户按下手机上的硬件后退按钮时,键盘会消失,但光标仍保留在Edittext中,即它仍然具有焦点。当按下后退按钮时,是否有可能使EditText失去焦点?我尝试使用以下代码,但它不起作用:

  • 问题内容: 我正在制作动态表格。一个有值的列表。每个值由一个字符串表示。 我的组件中有一个函数,可以向该字段添加新值。 值和按钮在我的HTML中这样显示。 一旦我在值的输入中写入一些文本,输入就会失去焦点。如果我在一个字段中添加了多个值,并且在一个输入值中写入了一个字符,则该输入将失去焦点,并且该字符将写入每个输入中。 问题答案: 当数组是原始类型(在您的情况下是数组)时,会发生这种情况。这可以通

  • 下面是我能想到的最简单的复制代码: 我将ms(迭代间隔毫秒)设置为,运行脚本并移动到浏览器上的不同选项卡。 然后我等待了大约10秒钟(脚本应该在4秒钟内完成),然后返回到选项卡。 如果我使用火狐,我看到脚本还没有完成,数字还在运行(我猜是从我留下的地方恢复的)。 这已经够烦人的了, 但是如果我将更改为1000并重复上述步骤,当我回到选项卡时,我看到脚本确实已经完成。 (脚本仍然需要4秒钟才能完成)

  • 我正在使用构建组件,其中我有一个文本字段列表。 我在redux中存储数据。 每个保留每个