我目前正在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演示.我想让它最大化并带到所有其他应用程序的前面.
谁能帮我?
还有一种"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)
您需要SWT.ON_TOP在Shell实例上设置样式位.不幸的是,设置样式位只能在构造函数中使用.
但是,如果我理解您的用例设置可能对您有用,那么您似乎只在最小化和最大化状态之间切换.
如果这不可能,只需处理并重新创建shell及其内容,当您想要在状态之间切换时.
| 归档时间: |
|
| 查看次数: |
6796 次 |
| 最近记录: |