【问题标题】:Java Swing Mac OSX Title BarJava Swing Mac OSX 标题栏
【发布时间】:2012-02-03 11:49:23
【问题描述】:

我正在开发 OSX 上的 Java Swing 应用程序,我希望它尽可能像 Mac 一样。我已经实现了大部分想要的外观,但还有一件事让我难以捉摸。

这是标题栏。许多本机 OSX 应用程序都有一个带有“工具栏按钮”的“高”标题栏和一个小按钮,用于在右上角切换“工具栏按钮”的显示/隐藏(参见 FeedForAll 应用程序的图像,它是 Java 但使用 SWT) .

有什么想法可以实现吗?任何帮助或指示将不胜感激。

【问题讨论】:

  • 嗯嗯嗯嗯,我还以为是Java...

标签: java macos swing titlebar


【解决方案1】:

在 Swing 中,本机操作系统组件并未实际使用。 Mac 上默认的“Aqua”外观和感觉尽可能地匹配本机外观,但它实际上只是用 Java2D 绘画。因此,例如,默认按钮的脉冲发光没有实现。

您可以在窗口上设置一些客户端属性以影响其外观,但“标题工具栏”似乎不是一个选项:

http://developer.apple.com/library/mac/#technotes/tn2007/tn2196.html#//apple_ref/doc/uid/DTS10004439

一种选择是切换到使用 Quaqua 外观。我自己没有使用过它,但据说它比 Aqua 更忠实于 Mac 的外观。它有一个属性,你可以设置它来获得你想要的工具栏外观:

http://www.randelshofer.ch/quaqua/guide/client_properties.html#JToolBar

【讨论】:

  • 谢谢。它确实看起来不错,实际上解决了我遇到的其他几个问题。现在唯一的问题是它是否可以与 Eclipse Indigo 中的 WidowBuilder Pro 一起使用。我会调查...
  • 太棒了!它与 WindowBuilder 一起工作,只需要一个 jar 和几行附加代码。小切换按钮不存在,但标题栏和工具栏融合在一起。现在我有一个非常像 Mac 的 Java 应用程序......
  • @RussellZahniser "但“标题工具栏”似乎不是一个选项:" - 我想它可能只是:)试试这些行:-JFrame frame = new JFrame( ); -JRootPane root = frame.getRootPane( ); -root.putClientProperty( "apple.awt.brushMetalLook", Boolean.TRUE ); 似乎适用于所有框架,但不适用于对话框。我认为“Quaqua”看起来像旧版本的 Mac
【解决方案2】:

抱歉,我认为您不能使用 Swing 获得工具栏控制按钮。没有 appl-esqe 系统属性可以为您绘制它。尝试“apple.awt.brushMetalLook”属性,但据我记得它只有统一的工具栏和标题栏。 SWT 似乎是您唯一的选择。

另外,我认为您不必担心此 UI 元素。此按钮已从所有 OS X 用户界面元素中移除,自 10.7 (Lion) 起

使用 Lion,大多数应用程序的右上角都有全屏图标。 在使用 Swing 进行 OS X 编程时,我认为你应该在某个时刻画一条线,让它看起来绝对原生。

除此之外,我认为 Mozilla 客户端是用 Objective C/C++ 和一些用于 Mac 的 Java(可能是)开发的。

【讨论】:

    【解决方案3】:

    您可以查看Mac Widgets for Java 中提供的统一工具栏。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-29
      • 2012-07-26
      • 1970-01-01
      • 2012-05-17
      • 1970-01-01
      • 2010-09-18
      • 1970-01-01
      相关资源
      最近更新 更多