【问题标题】:SWT: Minimizing child shells on Mac OSSWT:最小化 Mac OS 上的子 shell
【发布时间】:2012-04-10 21:17:57
【问题描述】:

我对 SWT 子 shell 在不同操作系统上的行为方式有疑问。在 Windows 上,当我单击子 shell 的最小化按钮时,只会最小化该 shell,即调整大小/停靠在屏幕的左下角(这是首选行为)。在 Linux 中,子 shell 最小化到任务栏(这不是一个真正的问题)。但是,在 Mac OS X 10.5 中,最小化子 shell 会导致父窗口也最小化(这是一个问题)。

通过将 parent 作为构造函数参数传递简单地创建子 shell,例如:

Shell editor = new Shell(Display.getCurrent().getActiveShell());

任何帮助将不胜感激。

【问题讨论】:

  • 我不确定 SWT 的工作方式与不同窗口系统/窗口管理器的工作方式是否存在问题。如果你开始改变我的操作系统最小化窗口的方式,我会对你的应用程序感到非常沮丧。
  • @EdwardThomson 我知道这一点,但不幸的是,这是我客户的要求之一,所以我无能为力。
  • 嗯。你是如何创造你的孩子壳的?它们是非模态的吗?你可以让它们成为顶级 shell 而不是孩子吗?
  • @EdwardThomson 他们是非模态的。不幸的是,他们需要有一个共同的父母有很多原因(我不想讨论)。

标签: java swt


【解决方案1】:

假设在不同平台上存在不同的窗口管理行为,这可能不是 SWT 的错 - 你能保证 getActiveShell 总是返回公共父 shell 吗?

另一个解决方案是简单地隐藏子 shell - 应该在每个平台上都一样,但可能不适合您的应用程序的上下文。

无论如何,我看到了很多替换多个子 shell 的选项。也许TabFolderExpandBar 可能适合这份工作?通过widgets page 获取概览。

如果这些选项不可行,您可以contact SWT 项目。也许开发人员可以帮助您了解 Mac OS 实现的内部工作。一个非常激进的(从正常角度来看是不必要的)步骤将移植到 Swing。

【讨论】:

  • 是的,getActiveShell() 总是返回相同的公共父 shell(只有一个)。我曾考虑过简单地隐藏外壳而不是最小化它们,然后通过按钮恢复它们,但我不确定客户是否会接受该解决方案。
猜你喜欢
  • 2014-11-25
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-28
  • 1970-01-01
相关资源
最近更新 更多