Dlaczego aplikacja oparta na Javie w OS X ma 2 różne projekty interfejsów użytkownika?

1

Cytuję 2 zdjęcia z Google.

image1 image2

Spójrz na zakładki. Są zupełnie inni. Właśnie skończyłem migrację do OS X. Zawsze wierzę, że OS X zapewnia jednolity interfejs użytkownika, aby ich aplikacje były bardziej eleganckie. Dodatkowo, jak zamienić interfejs użytkownika aplikacji w drugim obrazie tak, aby wyglądał tak na pierwszym obrazku?

JACK M
źródło
1
Twój dowód pochodzi z tego samego programu, ale z innej wersji kompilacji. To, co jest zaprogramowane w Javie, nie oznacza, że ​​Apple ma nad nim kontrolę i mówi, że tak musi wyglądać. Apple jest dobry, a Mac App Store pomaga ludziom zachować bezpieczeństwo, ale sposób, w jaki program wygląda, zależy od głowicy, która pisze kod
Andrew U.
Jeśli faktycznie piszesz kod, myślę, że to jest temat wyłączony i zdobądź szczegóły w StackOverflow - ale będą oczekiwać, że zobaczysz kod, który próbuje zmienić wygląd
Mark
@Zaznaj, że masz rację, ale na wysokim poziomie, warto omówić, dlaczego i jak aplikacja jest składana bez konieczności wchodzenia w wywołania systemowe i konkretne wersje bibliotek SDK / interfejsu.
bmike
@bmike - Zgadzam się, dlatego odpowiedziałem, ale to nie jest strona, która mówi OP, jak zmienić kod - pytanie nie ma wystarczającej ilości informacji, aby dokładnie wiedzieć, czego chce OP - chociaż najprawdopodobniej ogólny przegląd, który dostarczyłem
Mark

Odpowiedzi:

3

Ten sam kod Java (najczęściej) działa na wszystkich systemach operacyjnych / architekturach. Ma kilka różnych interfejsów API do rysowania formularzy / okien. Niektóre z tych interfejsów API, np. Swing pozwala na zmianę wyglądu i działania między emulowaniem różnych zestawów widgetów. Tak więc program może zostać napisany, aby umożliwić użytkownikowi zmianę wyglądu i sposobu działania.

Dostarczany wygląd i styl obejmuje OSX (jak na górze ekranu) i Windows (kilka formularzy) lub Motif lub GTK. Sposób ustawienia tego w Swing i więcej informacji można znaleźć w tym Dokument Oracle Zwróć uwagę, że nawet OSX wygląda i nie pasuje do wytycznych Apple, np. pozycjonowanie menu w oknie, a nie w górnej części wyświetlacza.

Jak każdy system Windowing możesz zawsze pisać programy, które zachowują się i wyglądają inaczej niż oczekiwany standard. Zdarza się, że dla OSX większość programistów przestrzega wytycznych Apple, ale nawet przy użyciu API dostarczonych przez Apple możesz mieć inne odczucia między programami Carbon (pierwotnie Mac OS & lt; = 9) a programami Cocoa (pierwotnie NeXT). AppStore pozwala Apple mieć nieco większą kontrolę, ale nie wiem, czy wytyczne dotyczące wyświetlania spotkań są rzeczywiście sprawdzane.

Mark
źródło
To nie jest nawet ta sama wersja aplikacji (1.3.03 vs 1.4.12)
Matthieu Riegler
@MatthieuRiegler - Moja odpowiedź jest nadal aktualna, z wyjątkiem tego, że autor może nie pozwolić użytkownikowi na zmianę wyglądu i sposobu działania, a może nawet zmienić API Java, którego używa
Mark
0

Java jest po prostu pojemnikiem i językiem wybranym przez programistę w celu opisania sposobu rysowania obrazu. Korzystanie z Java oznacza, że ​​programista zignorował standardowe elementy interfejsu OS X, które Apple dostarcza programistom, wraz z dokumentami z wytycznymi dotyczącymi interfejsu użytkownika. Przykładem jest właśnie to, dlaczego kod Java jest często postrzegany jako obywatel drugiej klasy wśród osób, które oczekują, że typowe oprogramowanie Apple będzie działać na komputerze Mac.

Pomyśl o restauracji. Wskazówki dla personelu można napisać po francusku, a pojemniki, które dostarczy żywność, mogą być składanymi pudełkami papierowymi pokrytymi woskiem na zewnątrz. Nadal nie zmieniłoby się tego, co dostałeś, gdyby jeden przepis był na północne włoskie jedzenie kontra północne indyjskie jedzenie.

Sama Java nie zakazuje wyglądu przycisku - tylko biblioteka i kod do rysowania GUI, aw twoim przykładzie różne składniki zostały umieszczone w tym samym pojemniku z oczekiwanymi różnymi wynikami.

bmike
źródło
Nie tak bardzo, że deweloper zdecydował się zignorować standardowe elementy interfejsu, ale bardziej, że Java nie daje dostępu do rodzimych widżetów, a więc musi użyć pewnej emulacji i myślę, że żaden z nich nie jest w 100%, co zmusza programistę do wyglądania źle
Mark
1
@mark Chodzi mi o to, że deweloper nie zdecydował się na przyjęcie narzędzi i kodu Apple wybierając java jako kontener dla części interfejsu aplikacji. Ponownie, przy wystarczającym finansowaniu i czasie możesz napisać od podstaw perfekcyjną implementację interfejsu użytkownika Apple całkowicie w java - ale koszt i wydajność mogą sprawić, że będzie to śmieszne.
bmike