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

使JFace Window在任务栏中闪烁还是引起用户注意?

蔚桐
2023-03-14
问题内容

我不知道有人知道如何解决这个问题:

在我的Java Eclipse插件中,有些过程需要一些时间。因此,用户可能会 最小化窗口* 并使 进程在后台运行
现在,当 过程完成时 ,我可以强制窗口再次回到顶部,但这在可用性上是不行的。我希望该过程在 任务栏中 闪烁
。有什么办法可以做到这一点?

*

我看了一下
org.eclipse.jface.window但找不到类似的东西,SWT文档也是如此…

我想到的另一件事-当人们也在 mac os xlinux 上使用此应用程序时,是否存在 平台无关的解决方案 ,该
解决方案 将通知用户该过程已完成,但没有弹出窗口?

任何想法都非常欢迎!

编辑:
我发现,在Windows上,用户可以调整他是否要启用向前景施加力。如果该选项被禁用,则任务将只是眨眼次数会在任务栏......
这里是一个很好的阅读上…

如果有人可能知道实现这种行为的某种独立于平台的方式,请与我分享您的知识!


问题答案:

我认为没有平台独立的方法可以做到这一点。您将必须查看特定于平台的API调用,并通过JNI或JNA实现它们。

对于Windows,这是我自己的一个应用程序的摘录:

public static void flashWindow(final Shell shell, boolean flashTray,
        boolean flashWindow) {
    try {
        if (isActiveWindow(shell)) {
            flashWindow = false;
            flashTray = false;
        }
        User32 lib = (User32) getLibrary("user32", User32.class);
        User32.FLASHWINFO flash = new User32.FLASHWINFO();
        flash.hWnd = new W32API.HANDLE(new W32API.UINT_PTR(shell.handle)
                .toPointer());
        flash.uCount = 2;
        flash.dwTimeout = 1000;
        if (flashTray || flashWindow) {
            flash.dwFlags = (flashTray ? User32.FLASHW_TRAY : 0)
                    | (flashWindow ? User32.FLASHW_CAPTION : 0);
        } else {
            flash.dwFlags = User32.FLASHW_STOP;
        }
        flash.cbSize = flash.size();
        if (lib.FlashWindowEx(flash) && !flashWindow) {
            final FocusListener focusListener = new FocusListener() {
                public void focusGained(FocusEvent arg0) {
                    flashWindow(shell, false, false);
                    shell.removeFocusListener(this);
                }

                public void focusLost(FocusEvent arg0) {
                }
            };
            shell.addFocusListener(focusListener);
        }
    } catch (UnsatisfiedLinkError e) {
    }
}

这是的简化版本getLibrary()

protected static StdCallLibrary getLibrary(String libraryName,
        Class<?> interfaceClass) throws UnsatisfiedLinkError {
    try {
        StdCallLibrary lib = (StdCallLibrary) Native.loadLibrary(libraryName,
                interfaceClass);
        return lib;
    } catch (UnsatisfiedLinkError e) {
        Logger.out.error("Could not load " + libraryName + " library.");
        throw e;
    }
}

使用dispose()完库后,请多加注意。



 类似资料:
  • 问题内容: 如何使用JavaScript在任务栏中使用户的浏览器闪烁/闪烁/突出显示?例如,如果我每10秒发出一次AJAX请求,以查看用户在服务器上是否有任何新消息,我希望用户立即知道它,即使他当时正在使用其他应用程序。 编辑:这些用户确实希望在收到新消息时分心。 问题答案: 这不会使任务栏按钮以改变颜色的方式闪烁,但是标题将一直闪烁,直到他们移动鼠标为止。这应该可以跨平台使用,即使他们只是在其他

  • 我正在开发一个简单的聚合,它对给定资源上发生的事件总数进行汇总(请参阅:在flink中计算总数并定期发射)。在一些人的帮助下,我成功地完成了这项工作,但现在我遇到了另一个问题。 我试图计算资源生命周期的总数,但我正在从保留期为24小时的kinesis流中读取事件。因为这意味着我无法访问在此之前发生的事件,所以我需要从一个每天计算一次总数的遗留(批处理)系统引导我的状态。 基本上,我希望以某种方式从

  • 问题内容: 我正在使用以下代码在任务栏上显示JDialog,并且在JDK 1.6中可以正常工作。 但是当我使用方法设置模态类型时,它不起作用 这两个代码之间有什么区别?有什么方法可以解决此问题吗? 问题答案: 问题是某些所有者的构造方法会创建一个伪框架所有者(如果所有者是出于历史原因)。但是 必须没有 所有者像顶级窗口一样可见。即 将工作。

  • 这是因为在开发模式下,为了通过 Webpack 实现热加载,CSS代码是打包在 JavaScript 代码中,并动态打到页面中去,从而元素重绘引起了闪烁。 不用担心,在生产模式下,CSS代码会单独打包至独立的文件并置于head标签内,不会出现页面闪烁的现象。

  • 我有一个使用Apache Flink(Flink版本:1.8.1)使用Scala进行流式处理的工作。flow作业要求如下:Kafka->写给Hbase->用不同的主题再次发送给Kafka 在向Hbase写入过程中,需要从另一个表中检索数据。为确保数据不为空(NULL),作业必须(在一定时间内)重复检查数据是否为空。 编辑:我的意思是,有了我在内容中描述的问题,我想过必须在作业流中创建某种类型的作业

  • 我有一个RecyclerView,它从API加载一些数据,包括一个图像url和一些数据,我使用networkImageView延迟加载图像。 下面是适配器的实现: 问题是,当我们在recyclerView中刷新时,它会在开始时短暂闪烁,这看起来很奇怪。 我只是使用了GridView/ListView,它就像我预期的那样工作。没有闪电战。 在我的片段创建的视图中配置RecycleView: 有人面临