Межплатформенный интервал/заполнение пользовательского интерфейса

Я написал пользовательский интерфейс Java, используя библиотеку пользовательского интерфейса SWT и библиотеку макетов MigLayout.

На этой странице показаны скриншоты пользовательского интерфейса в Windows, Linux и OSX: http://mchr3k.github.com/org.intrace/screenshots.html

В Linux и OSX мой пользовательский интерфейс имеет гораздо больше отступов и интервалов, которые, как мне кажется, занимают много места на экране. Это нормально для этих платформ? Если нет, то как лучше всего обойти это?

РЕДАКТИРОВАТЬ: связанные скриншоты теперь обновлены и больше не показывают дополнительный пробел в OSX, поскольку я явно установил поля для некоторых элементов пользовательского интерфейса равными 0. Пользовательский интерфейс OSX все еще довольно разнесен, но я предполагаю, что это правильно для Платформа.


person mchr    schedule 12.06.2011    source источник
comment
Это нормально, поскольку вы получите кроссплатформенный пользовательский интерфейс. Смысл пользовательского интерфейса CP не в том, чтобы хорошо выглядеть, а в том, чтобы он функционировал — если вам нужна эстетика, отбросьте Java и возьмите QT, Objective C и .Net.   -  person Aaron Yodaiken    schedule 13.06.2011
comment
@Luxun: вполне возможно (и довольно просто) создать приемлемый и профессиональный пользовательский интерфейс на Java, который хорошо выглядит на всех основных платформах, просто запросив внешний вид операционной системы.   -  person Lawrence Dol    schedule 13.06.2011
comment
@SoftwareMonkey - это не так просто. Я использую SWT, чтобы дать мне собственные виджеты на каждой платформе, но по-прежнему важно проводить тестирование на предмет специфичных для платформы особенностей. Например, в OSX мой jar должен быть запущен с -XstartOnFirstThread, и чтобы имя моего приложения отображалось в доке, мне нужно было бы упаковать jar с файлом info.plist.   -  person mchr    schedule 13.06.2011


Ответы (2)


Это Микаэль Грев, создатель MigLayout.

Как уже упоминалось, это функция MigLayout. Вместо использования x количества пикселей (конечно, вы тоже можете использовать это) по умолчанию используются промежутки, такие как связанные, несвязанные и абзац. Они соответствуют разным размерам в разных наборах инструментов пользовательского интерфейса. Например, в OS X рекомендуемое пустое пространство между компонентами больше, чем в Windows.

Итак, да, вот как это должно выглядеть, и это будет выглядеть правильно для пользователя OS X.

Кажется, у вас слишком много пустого пространства внизу панели вывода как в OS X, так и в Windows.

Вы можете использовать класс PlatformDefaults в MigLayout, чтобы принудительно использовать платформу или изменить пробелы по умолчанию. Проверьте исходный код, если хотите знать, что происходит за кулисами.

И помните, это функция, позволяющая каждому разработчику не следить за тем, как интервалы должны выглядеть на разных платформах, что довольно сложно.

Привет, Микаэль

person Mikael Grev    schedule 13.06.2011
comment
Добро пожаловать в StackOverflow! Если вы решите зарегистрировать учетную запись под своим именем, это faq по слиянию может представлять интерес. - person trashgod; 13.06.2011
comment
Вы действительно имеете в виду на Windows и OSX? Я думаю, что в Windows у меня очень мало пробелов. Я еще раз посмотрел, и OSX — единственная платформа, которая, как мне кажется, имеет слишком много места внизу. Есть ли простой способ решить, если у меня есть лишнее пространство? Я попытался включить режим отладки Miglayout, но это, похоже, не отображало ничего лишнего в OSX. - person mchr; 14.06.2011

На самом деле это особенность MigLayout, если я правильно помню. Если вы этого не хотите, я уверен, что вы можете настроить MigLayout. В противном случае вы можете использовать другой менеджер компоновки (но я все же настоятельно рекомендую использовать табличный), который использует постоянный интервал для всех платформ (например, мой MatrixLayout).

person Lawrence Dol    schedule 13.06.2011
comment
Как вы думаете, какая функция Miglayout добавляет этот интервал в Linux/OSX? - person mchr; 13.06.2011