Wirklich gute Frage. Ich habe mich in den letzten Jahren immer selbst darüber gewundert, ich dachte, es steckt ein legitimer Grund dahinter, aber das gibt es wirklich nicht.
Ich denke, die Antwort ist ziemlich einfach, und viele Antworten befassen sich nicht wirklich mit dem Thema.
Wenn Ihre Sprache das Zeichnen von Kreisen auf dem Bildschirm zulässt, ist es zu 100% möglich, ein darauf basierendes GUI-Framework zu erstellen, das das Erscheinungsbild und Verhalten von Windows-Formularsteuerelementen genau nachahmt.
Da Java plattformübergreifend ist, ist es durchaus möglich, sicherzustellen, dass die Benutzeroberfläche basierend auf dem aktuell ausgeführten Systemtyp (Mac / Windows) auf beiden Plattformen unterschiedlich aussieht und dem Laufzeitplattformstil entspricht.
Wie Sie beispielsweise in XAML sehen können, kann die Benutzeroberfläche leicht in sehr strukturierter Form und Sprache dargestellt werden. Die Auswahl des "nativen" Verhaltens ist auch möglich, wenn dafür Zeit benötigt wird.
So wäre es möglich, ein GUI-Framework zu erstellen, mit dem Java-Entwickler Anwendungen erhalten, die auf Mac und Windows nativ aussehen.
Wir kommen also zu Swing, das ist nur ein GUI-Framework aus der potenziellen Unendlichkeit von GUI-Frameworks, die für Java erstellt werden könnten. Es verhält sich wie es programmiert wurde, was nicht dem obigen Prozess folgt und Sie erhalten auf beiden Systemen seltsam aussehende Apps. Das ist die Entscheidung, die die Swing-Entwickler getroffen haben. Niemand hat sie gezwungen, dies zu tun und sich so zu verhalten.