Java SWT应用程序 - 带来前沿

Din*_*esh 9 java swt

我目前正在Windows 7上开发一个SWT java应用程序.通常应用程序将被最小化,并且当串行端口上有事件时,应用程序应该最大化自身.以下代码执行最大化部分.

private void bringToFront(final Shell shell) {
    shell.getDisplay().asyncExec(new Runnable() {
        public void run() {
            if(!shell.getMaximized()){
                shell.setMaximized(true);
            }
            shell.forceActive();
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

但有时SWT应用程序在另一个应用程序后最大化.例如,如果我在全屏模式下运行powerpoint,则最大化应用程序将落后于powerpoint演示.我想让它最大化并带到所有其他应用程序的前面.

谁能帮我?

mil*_*lez 7

还有一种"hackey"方法可以做到这一点,而不是你发现的,这并不需要你最小化其他一切.你实际上需要调用shell.setMinimized(false),然后shell.setActive()恢复以前的状态shell.但是,只有shell在真正处于最小化状态时才有效.所以这是我的最终解决方案,shell如果它没有最小化,人为地最小化.如果必须进行最小化,则成本是快速动画.

shell.getDisplay().syncExec(new Runnable() {

    @Override
    public void run() {
        if (!shell.getMinimized())
        {
            shell.setMinimized(true);
        }
        shell.setMinimized(false);
        shell.setActive();
    }
});
Run Code Online (Sandbox Code Playgroud)


the*_*man 5

您需要SWT.ON_TOPShell实例上设置样式位.不幸的是,设置样式位只能在构造函数中使用.

但是,如果我理解您的用例设置可能对您有用,那么您似乎只在最小化和最大化状态之间切换.

如果这不可能,只需处理并重新创建shell及其内容,当您想要在状态之间切换时.


小智 -2

您需要您的应用程序在全屏模式下工作。

查看此链接 如何创建覆盖 Windows 标题栏的 Java Swing 应用程序?