【问题标题】:Setting system properties in Groovy在 Groovy 中设置系统属性
【发布时间】:2016-07-02 02:40:51
【问题描述】:

请注意:虽然我在这里提到了 Swing 和 MacOS,但这个问题与它们中的任何一个都无关:我只是将它们作为我正在尝试做的具体示例提供.


我正在尝试以常规方式设置系统属性。如果您在 Mac 上开发 Swing 应用程序,通常的做法是设置以下系统属性,以便您的 Swing 应用程序的菜单看起来与典型的 Mac 应用程序相同:

System.setProperty("apple.laf.useScreenMenuBar", "true")

当我在我的 main 方法中调用它时,它具有预期的效果(菜单栏从 JFrame 拉出并固定在屏幕顶部)。

但是当我去尝试让那个调用更时髦时:

System.properties['apple.laf.useScreenMenuBar', 'true']

它不起作用。没有例外,它只是停止工作并且在 UI 中没有预期的效果。 为什么,我可以做些什么来解决它?

【问题讨论】:

    标签: groovy system-properties


    【解决方案1】:

    应该是:

    System.properties['apple.laf.useScreenMenuBar'] = true
    

    System.properties.'apple.laf.useScreenMenuBar' = true 
    

    在这段代码中:

    System.properties['apple.laf.useScreenMenuBar', 'true']
    

    ['apple.laf.useScreenMenuBar', 'true'] 被当作键。见下文:

    def m = [ [1, 2,]:3, 2:4 ]
    assert m[1, 2] == 3
    

    以下代码返回正确结果:

    System.properties['lol'] = 2
    
    assert 2 == System.properties['lol']
    

    【讨论】:

    • System.properties.'apple.laf.useScreenMenuBar' = true
    • @tim_yates,是的,可能也是如此。
    • 感谢@Opal (+1) - 有趣的是,这些都不起作用。他们很可能使用了有效的 Groovy 语法,但出于某种原因 Swing(或 Mac OS)拒绝使用它们。我的意思是菜单没有显示为“固定”/停靠在屏幕顶部,独立于 JFrame/主窗口。但是当我使用标准 Java 风格的语法(使用setProperty(...))时,菜单被固定/停靠。奇怪...
    • @smeeb,不知道为什么它不起作用,但可以肯定你使用的语法不正确。
    • 再次感谢您的帮助;标记为正确,并在用例特定的警告下,此特定 Groovy 语法似乎对 Mac 上用于 Swing 开发的此特定 sysprop 没有影响。
    猜你喜欢
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    • 2014-02-04
    • 2011-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-01
    相关资源
    最近更新 更多