Должен ли я быть обеспокоен использованием AWTUtilities.setWindowShape ()? - PullRequest
4 голосов
/ 03 августа 2010

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

Генерация javadoc выдает мне эту ошибку:

предупреждение: com.sun.awt.AWTUtilities - собственный API Sun и может быть удален в будущем выпуске1007 *

Что именно это означает?Я могу использовать его, но он может перестать работать с любым выпуском?Зачем вставлять это тогда?Что еще более важно, и реальный вопрос здесь, если Sun удалит это, они, вероятно, заменят это другим способом сделать то же самое?Для этого и есть предупреждение?

Полагаю, я мог бы просто проверить наличие класса AWTUtilities перед вызовом кода.Но это просто противно, если мне не нужно это делать.

У кого-нибудь есть опыт работы с подобными классами?Были ли они в конечном итоге приняты в API, и предупреждение было удалено или заменено другим методом, выполняющим ту же самую задачу?Мне нужно беспокоиться об этом?

К вашему сведению, я прочитал это:

Как распространять AWTUtilities

Ответы [ 2 ]

4 голосов
/ 04 августа 2010

В документации Oracle указано:

Примечание: класс com.sun.awt.AWTUtilities не является частью официально поддерживаемого API и отображается как деталь реализации. API предназначен только для ограниченного использования вне базовой платформы. Это может резко измениться между выпусками обновлений, и даже может быть удалено или перемещено в некоторые другие пакеты или классы. Класс должен использоваться через Java Reflection. Поддерживаемые и общедоступные API появятся в следующем основном выпуске JDK.

JDK 7 уже давно придет, так что может пройти некоторое время. Нужно ли вам это использовать - это вопрос управления рисками, на который может ответить только ваша компания. Если мы говорим о внутреннем приложении, в котором развернутая JRE может быть гарантирована, то у вас не будет проблем, потому что вы можете гарантировать совместимую JRE. Если мы говорим о развертывании для внешних клиентов, вам нужен план поддержки, если этот временный API когда-либо изменится.

Устойчивый способ сделать это - создать оболочку в SWT согласно этому фрагменту , а затем использовать мост SWT_AWT, чтобы получить фрейм для использования в вашем приложении:

java.awt.Frame frame = SWT_AWT.new_Frame(shell);

Если вы просто развертываете на одной платформе (например, Windows), тогда бросьте одну банку SWT плюс собственную библиотеку. Если вы нацеливаетесь на несколько платформ, это становится проблемой.

Так что это два варианта: справиться с риском AWTUtilities или использовать мост SWT_AWT.

EDIT:

Некоторое время прошло, а Java 7 вышла. Документация по официально поддерживаемому способу достижения этой цели содержится в Java Tutorials . Раздел «Как реализовать фасонное окно» внизу дает пример. Это, конечно, предполагает, что вы можете использовать Java 7

0 голосов
/ 26 февраля 2013

Вам не нужен новый объект Frame, вы можете использовать только

this.setShape(shape);

или ваше имя кадра, как это

Frame1.setShape(shape);

много методов AWT было применено к java.awt.Frame

...