2009-11-20 3 views
4

SWT предназначен для кросс-платформенной работы, поэтому он может работать на Mac. Проблема в том, что он совершает кардинальный грех в Macland - это UGLY. Панели инструментов не похожи на панели инструментов Mac, строки состояния не похожи на строки состояния Mac и т. Д.Усовершенствование приложения SWT на Mac

Есть ли у кого-нибудь опыт в создании приложения SWT больше похоже на приложение Mac? Например, создавая специфичные для платформы вызовы JNI через класс «ОС» в SWT? Если да, то как это было сложно?

(Этот вопрос возникает потому, что мы смотрим на перенос существующего приложения SWT, предназначенный для запуска на Windows)

Благодарности

ответ

1

Лучшее, что я могу предложить использовать либо MacWidgets или Quaqua, которые являются свободными и на разных стадиях зрелости. Плохая новость заключалась в том, что они оба основаны на Swing, что, вероятно, не то, что вы хотите услышать.

+0

Возможно ли испечь части Swing в SWT? –

+0

Оказывается, это: http://www.eclipse.org/articles/article.php?file=Article-Swing-SWT-Integration/index.html –

1

Вы можете заставить приложение выглядеть и вести себя как приложение для Mac. Apple поставляет приложение под названием JarBundler с ним, вы можете поместить свои пункты меню туда, где они принадлежат, он также создаст исполняемый файл с двойным щелчком, и вы можете установить значок.

Компоненты Swing на Mac OS X очень похожи на их компоненты какао, а для OS X вы можете установить некоторые специальные флаги, которые сделают их похожими на их счетные части какао, например, вы можете установить флаг для JTextField и сделайте его похожим на поле поиска какао.

Кроме того, все компьютеры Mac поставляются с предустановленной java, поэтому это меньше беспокоит.

+2

Исходный вопрос был о SWT, а не о Swing. Хотя ваша информация полезна (отсюда и без голосования), это не ответ на исходный вопрос. –

5

Это, как правило, проблема свинг не SWT (SWT напрямую связана с OS/каркасных при условии виджетами) - цитата из Мягкое введение в SWT и JFace2:

SWT это библиотека, которая создает представление Java собственного хоста, работающего с элементами управления графическим интерфейсом. Это хост зависит от реализации. Это означает, что . Приложения на основе SWT имеют несколько основных характеристик: : 1. Они выглядят, действуют и действуют как «родные» приложения. 2. Представленные виджеты отражают виджеты (компоненты и элементы управления), предоставляемые в операционной системе хоста. 3. Любое специальное поведение библиотек GUI хоста отражается в SWT GUI.

Предварительно 3,5 Milestone использовали для использования рамок углерода и теперь 3.5+ поддерживает 32/64-битную структуру какао 1 так что, возможно, что привело вас к путанице? Или вы можете быть более конкретным, дать нам версию, которую вы используете, и некоторые скриншоты/примеры кода для воспроизведения?

Я разработки приложения Java на основе SWT/Eclipse RCP на некоторое время на OSX и не нашли, и главная проблема с взглядом & ощущения (причинно это не 100% соответствуют Яблоко HID 3, как это соответствует Затмении UIG)

0

Я часто использую нечетные «платформенные запросы» для настройки приложения. Например, его не совсем о том, чтобы нарядить приложение и многое другое (например), чтобы сделать опцию меню выхода, «Quit» на Mac и «Exit on windows.Есть несколько правил стиля Mac, которые я не могу обойти, но это может помочь.

См. Patform.java для класса переключения и ExitAction.java для примера его использования.

Успехов с ним: D

0

Я создал поддержку родной панели инструментов Mac OS первым для Carbon, то для версии какао SWT. В то время мне удалось перенести перспективный переключатель eclipse на собственную панель инструментов. У меня не было опыта Obj-C, поэтому версия Cocoa была больше, чем версия Carbon, но когда все говорят, это не очень сложно. После поддержки панели инструментов я написал код для поддержки Alpha Compositing, прозрачности собственного изображения, аппаратных ускоренных эффектов (CAAnimation). Для них труднее было понять, почему некоторые API-интерфейсы даже не были доступны для генерации генератором JNI Eclipse. Оказалось, что генератор моста python, предоставленный Apple, не был обновлен для синтаксиса свойства Obj-C 2.0. Когда я исправил это, я смог заставить генератор SWT JNI выплюнуть отсутствующие API. Оттуда их использование было легкой частью. Вы можете найти некоторые частичные части этого на сервере bugzilla eclipse.org.

Я не могу сказать, что это всегда просто, но если вы уже знаете Obj-C, то вы должны быть способны делать все, что хотите. Пару дней назад я снова начал работать над SWT Cocoa, чтобы добавить поддержку изображений ARGB (в отличие от ограниченной поддержки прозрачности, предлагаемой ImageData).

Удачи.

Смежные вопросы