2011-08-16 9 views
6

Ponieważ OS X obsługuje "naturalne przewijanie", moje aplikacje działają nieprawidłowo. Naturalne przewijanie jest wykonywane dla paneli przewijania, które bardzo lubię. Ale gdy chcę powiększyć/pomniejszyć, działa źle. Tak, więc chcę sprawdzić metodę przewijania dla OS X.
Jeśli jest "naturalna", przyjmę wartość przeciwną do wartości przewijania z MouseWheelEvent.getWheelRotation(), aby moje zachowanie było prawidłowe.Java: Jak uzyskać metodę przewijania w OS X Lion?

Krótko mówiąc: Jak sprawdzić, czy OS X używa naturalnego przewijania, czy nie?

+0

proszę można wyjaśnić czym jest "przewijanie nienaturalne dla paneli przewijania", co/jak jest inna wartość int od 'ScrollableUnitXxx' i' ScrollableTracksXxx' względem/do porównywania z innym natywnym OS – mKorbel

+1

OS X zapewnia ustawienie "naturalne przewijanie". Jeśli ją włączysz i przewiniesz, zawartość podąży za twoimi palcami. Jeśli nie jest włączona, paski przewijania podążają za palcami, co powoduje, że zawartość przesuwa się w drugą stronę. –

Odpowiedz

3

Znaleziono rozwiązanie.

Najpierw potrzebna jest biblioteka do odczytu plików .plist. Użyłem this one.

niż można łatwo odczytać w GlobalPreferneces.plist (sprawdzane fseventer który plik jest zmieniana przy zmianie opcji przewijania), aby dowiedzieć się, jaki rodzaj przewijanie jest włączone tak:

try { 
    File globalPref = new File(System.getProperty("user.home") + "/Library/Preferences/.GlobalPreferences.plist"); 
    NSDictionary dict = (NSDictionary)PropertyListParser.parse(globalPref); 

    NSNumber pref = (NSNumber)dict.objectForKey("com.apple.swipescrolldirection"); 

    if(pref.boolValue()) { 
     //natural scrolling is enabled 
    } 
} catch (Exception ex) { 
    System.out.println("Faild to parse plist: " + ex.getMessage()); 
} 
+0

To jest rzeczywiście to. Znalazłem plik, a jego wartość zmienia się w miarę modyfikowania ustawienia. Dzięki! –

1

Ponieważ Apple upuściło Javę, nie sądzę, że istnieje wbudowana metoda wykrywania, czy włączone jest naturalne przewijanie. Można jednak odczytać pliki .plist w celu skonfigurowania zachowania myszy/touchpada (co jest podstawowym plikiem xml) i wyszukać właściwość, aby włączyć naturalne przewijanie ustawione na wartość true lub false.

Można znaleźć żądane pliki .plist tutaj:

User/Library/Preferences/< - Ten folder jest ukryty w Lion!

com.apple.driver.AppleBluetoothMultitouch.mouse.plist

com.apple.driver.AppleHIDMouse.plist

Edit:

Nie można odczytać w pliku plist z normą Java Framework, od kiedy wszystkie .plsty w systemie Mac OS 10.4 są zapisywane w formacie binarnym. Zobacz moją drugą odpowiedź na poprawne rozwiązanie.

+0

Znalazłem folder, ale wspomniane pliki nie są tam. –

+0

To bardzo dziwne. Czy kiedykolwiek wprowadziłeś zmiany w ustawieniach myszy? Musisz również zastąpić Użytkownika swoją własną nazwą użytkownika :) –

+0

Tak, wprowadziłem zmiany. Używaj tylko GUI dostarczonego przez Apple. Plik nie powinien zniknąć z powodu zmian. –

1

Spójrz na listę mailingową Mike'a Swinglera pod adresem answer na liście dyskusyjnej java-dev. Jest w tym cały wątek.

+0

Dzięki za temat, ale wciąż nie ma odpowiedzi na liście mailingowej. –

Powiązane problemy