当前位置: 首页 > 面试题库 >

您如何强制Java swt程序“将自身移至前台”?

吴欣悦
2023-03-14
问题内容

目前,在使用swt的情况下,有时我想让某个程序任意出现在前台(就像闹钟一样)。

通常,以下作品(jruby):

@shell.setMinimized(false)
@shell.forceActive

如果将外壳最小化,则它将外壳置于最前面。

随时创建一个新的外壳也将(新外壳)带到了前面。

但是,到目前为止,如果外壳 没有
最小化,那么上面的代码只是在任务栏中闪烁(闪烁)应用程序图标。好吧,实际上,当您第一次运行它时,它将它带到了最前面。之后,它仅在任务栏中闪烁。那是窗户。在Linux上,它似乎仅在任务栏中闪烁(ubuntu默认)。

有谁知道跨平台的方法让应用程序以swt的形式出现在最前面吗?

看来forceActive setActive setMinimized(false)setFocus
setFocus和setVisible都无法完成此任务。

我很确定这是可能的(至少在Windows中是这样),因为E文本编辑器可以做到。好吧,这还不算什么,但是至少其他一些应用已经知道可以做到这一点。

我在想这可能是swt bug
192036吗?

非常感谢。

有关:

  • 如何把窗户放到前面?
  • 打开外壳
  • 将窗口保持在前景中(即使它失去焦点)
  • 错误244597-无法在gtk上以编程方式激活外壳
  • 需要在Windows上将应用程序置于前台
  • 如何把窗户放到前面?这个摇摆例子也可能是某种线索…

问题答案:

http://github.com/rdp/redcar/commit/d7dfeb8e77f13e5596b11df3027da236f23c83f0

展示了我如何在Windows中执行此操作(使用ffi)。

几个有用的技巧“可能”是

在BringToFront.SetForegroundWindow(wanted)调用之后添加一个“ sleep 0.1”(希望这个实际上不是必需的)。

将窗口置于前景 后, 添加一个shell.set_active 。由于某种原因,forceActive不会调用setActive。

注意,setActive会执行user32.dll BringWindowToTop调用,并且需要在分离线程输入之前完成。

还要注意的是,如果您可以按正确的顺序调用,则可能根本不需要使用线程输入技巧(?)。

http://betterlogic.com/roger/?p=2950

(包含一些有关如何 正确 执行此操作的好提示)

在Linux上,forceActive 确实可以 工作-但仅在您移至其他几个窗口之前,然后在任务栏中闪烁(仅此之后)。猜测swt错误。[1]

也相关:

如何把窗户放到前面?

http://github.com/jarmo/win32screenshot/blob/master/lib/win32/screenshot/bitmap_maker.rb#L110
“ set_foreground”似乎可以 同时使用 xp和Windows 7

[1] 需要在Windows和https://bugs.eclipse.org/bugs/show_bug.cgi?id=303710
上将应用程序置于前台



 类似资料:
  • 问题内容: 我创建了一个自定义视图(我们称之为),该视图基本上只是使用画布在其自身上绘制一些文本。使用全局变量设置要绘制的文本。 在程序执行过程中的某个时候,我想更改全局变量,并重新绘制自身以更新文本。我尝试过然后,但这无济于事。我怀疑既然内的任何内容都没有改变,它认为没有理由打电话给我。是否有任何方法可以强制视图重新绘制自身,即使它认为不需要重新绘制它呢? 问题答案: 如果我在MyView内部有

  • 问题内容: 因此,我正在远程容器上查看带有jmap的堆,并且我想对其进行强制垃圾收集。如何在不弹出jvisualvm或jconsole和朋友的情况下执行此操作? 我知道您不应该进行强制垃圾回收的实践-您应该弄清楚为什么堆很大/越来越大。 我还意识到System.GC()实际上并没有强制垃圾回收-它只是告诉GC您希望它发生。 话虽如此,有没有一种方法可以轻松地做到这一点?我缺少一些命令行应用程序?

  • 移动端HTML如何做强制横屏效果?就是页面一打开就是横屏的,现在页面横屏了,可是里面的子元素不横屏,我就奇怪了,我看别人写的都可以我跟写的就不行,我还对比了样式,也没看出来哪里不一样 有谁知道是怎么回事吗?

  • 本文向大家介绍您如何强制MySQL LIKE区分大小写?,包括了您如何强制MySQL LIKE区分大小写?的使用技巧和注意事项,需要的朋友参考一下 为了在LIKE BINARY的帮助下强制MySQL LIKE区分大小写,以下是语法- 为了理解上述概念,让我们创建一个表。以下是创建表的查询- 现在,您可以插入带有小写字母的记录,以强制MySQL LIKE区分大小写- 在表中显示记录。查询如下- 以下

  • 问题内容: 我有一个C / C ++程序,它在内存不足时可能会挂起。我们通过同时运行许多副本发现了这一点。我想在不完全破坏开发机性能的情况下调试程序。有没有一种方法来限制可用的内存,以便在请求了500K内存之后,new或malloc将返回NULL指针? 问题答案: 试着反省这个问题,并询问如何限制操作系统将允许您的进程使用的内存量。 尝试查看http://ss64.com/bash/ulimit.

  • 对于我的应用程序日志,我计划将日志从我的内部服务器转发到AWS Kinesis Firehose。我正在尝试使用Logstash和log-stash-output-plugin https://github.com/samcday/logstash-output-kinesis 但我认为这个插件需要将日志数据转发到Kinesis数据流,然后我们可以创建一个管道到Kinesis消防水管。如果我们指向