Действительно хороший вопрос. Я всегда задавался вопросом об этом сам в течение нескольких последующих лет в прошлом, я думал, что есть какая-то законная причина этого, но на самом деле это не так.
Я думаю, что ответ довольно прост, и многие ответы на самом деле не вникают в проблему.
Если ваш язык позволяет рисовать пиксель на экране, то на 100% возможно создать на его основе графический интерфейс, который будет точно имитировать внешний вид элементов управления Windows.
Поскольку Java является кроссплатформенной, также вполне возможно убедиться, что в зависимости от фактического типа работающей системы (Mac / Windows) пользовательский интерфейс выбрал бы различный вид на обеих платформах, соответствующий стилю платформы времени выполнения.
Как вы можете видеть в XAML, например, пользовательский интерфейс может быть легко представлен в очень структурированной форме и на языке. Выбор «нативного» поведения также возможен, если для этого требуется время.
Таким образом, можно было бы создать структуру GUI, которая позволила бы разработчикам Java получать приложения, которые выглядели бы нативно на Mac и Windows.
Итак, мы переходим к Swing, это всего лишь одна инфраструктура GUI из потенциальной бесконечности структур GUI, которые могут быть созданы для Java. Он ведет себя так, как был запрограммирован, что не соответствует описанному выше процессу, и вы получаете странно выглядящие приложения в обеих системах. Это выбор, сделанный разработчиками Swing, никто не заставлял их делать это и вести себя таким образом.