2016-03-16 15 views
5

Bitte beachten Sie: Obwohl ich Swing und MacOS hier erwähne, hat diese Frage nichts mit beiden zu tun: Ich gebe ihnen nur ein konkretes Beispiel dafür, was ich versuche zu tun .Einstellen der Systemeigenschaften in Groovy


Ich versuche, eine Systemeigenschaft den groovigen Weg zu setzen. Wenn Sie eine Swing-Anwendung auf einem Mac entwickeln, ist es üblich, die folgende Systemeigenschaft zu setzen, so dass Ihre Swing-App-Menü der gleichen wie typische Mac-Applikationen aussieht:

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

Als ich nenne das in meiner main Methode Es hat den gewünschten Effekt (die Menüleiste wird von JFrame abgezogen und am oberen Bildschirmrand fixiert).

Aber wenn ich gehen, um zu versuchen und diesen Anruf groovier zu machen:

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

es funktioniert nicht. Keine Ausnahmen, es funktioniert einfach nicht mehr und hat nicht den gewünschten Effekt in der Benutzeroberfläche. Warum und was kann ich tun, um es zu beheben?

Antwort

12

Sollte sein:

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

oder

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

In diesem Stück Code:

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

['apple.laf.useScreenMenuBar', 'true'] wird als Schlüssel genommen. Siehe unten:

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

Das folgende Stück Code liefert korrekte Ergebnisse:

System.properties['lol'] = 2 

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

Oder 'System.properties.'apple.laf.useScreenMenuBar‘ = true' –

+0

@tim_yates, ja könnte genauso gut sein . – Opal

+0

Danke @Opal (+1) - interessanterweise funktioniert keiner von diesen. Sie können sehr wohl eine gültige Groovy-Syntax verwenden, aber Swing (oder Mac OS) lehnt es aus irgendeinem Grund ab, sie zu verpflichten. Damit meine ich, dass die Menüs unabhängig vom JFrame/Hauptfenster nicht als "gepinnt"/angedockt an den oberen Bildschirmrand angezeigt werden. Aber wenn ich die Standard-Java-Syntax verwende (mit 'setProperty (...)'), werden die Menüs * gepinnt/angedockt. Seltsam ... – smeeb