2016-09-14 7 views
0

Я понимаю, что API com.sun. *, Который в настоящее время ограничен, но все еще используется для элементов управления JavaFX, больше не будет доступен по мере выпуска Java9; однако API-интерфейс «skin» станет общедоступным или иным образом доступным, так что это изменение будет эффективно применяться только к API «поведения». Это мнение основано на моем чтении самого последнего обновления для JEP 253 (две недели так относительно недавно). Для тех, у кого больше опыта работы с JavaFX и его эволюционным процессом, чем у меня (что не требует многого), можно ли предположить, что текущий API-интерфейс «skin» останется доступным (и станет неограниченным)? Я не ожидаю никаких гарантий, но если это будет какое-то предложение, тогда будет оценена наилучшая оценка того, что может произойти.JavaFX & JEP 253: API-интерфейс «skin» останется доступным после выпуска Java9?

Заранее благодарим за любой ответ!

+1

Мое понимание от общения с парнями JavaFX - это скины станут общедоступными, но Behaviors не будет. –

+2

API скинов станет общедоступным, но имена пакетов (обязательно) изменятся для того, чтобы это произошло (на 'javafx.scene.control.skin'). Поведение не будет публичным. –

+0

Спасибо @purringpigeon ваш ответ, это полезно. Как я могу дать вам кредит на ваш ответ? – jfr

ответ

1

Как JEP 253 гласит:

С предстоящим выпуском Java 9, и, в частности, с введением сильных границ между модулями в Project Jigsaw, разработчики считают, что их код больше не будет компилировать или работать, так как com.sun. * пакеты больше не будут доступны.

Для того, чтобы обеспечить некоторую поддержку для разработчиков, которые подклассы классов кожи в com.sun.javafx.scene.control.skin, эти классы будут перемещены в публичный пакет javafx.scene.control.skin в JavaFX 9. СЭП не стесняется о том, что это для поддержки разработчиков которые проигнорировали официальные рекомендации об использовании этих классов в первую очередь.

СЭП также утверждает

Намерение состоит в том, чтобы переместить много скинов управления JavaFX в соответствующий государственный пакет, скорее всего javafx.scene.control.skin. Нельзя также перемещать связанные классы поведения.

Это означает, что классы поведения будут оставаться в непубличной API и, таким образом, станет недоступной в Java 9. Классы кожи переедет в другой пакет, поэтому код, который полагается на текущий com.sun.javafx.scene.control.skin пакет не будет скомпилирован или запустить в Java 9, но для этого можно изменить. Код, который опирается на классы поведения, не будет компилироваться или запускаться, и его не будет изменено для этого.

В JEP перечислены классы, которые были перемещены. Кроме того, текущая документация API раннего доступа для JavaFX 9, с классами скинов, перенесенными в javafx.scene.control.skin, можно увидеть here.

+0

спасибо за ваш ответ, возникает другой вопрос относительно того, что квалифицируется как «скин», а не «поведение» (в нескольких частях). Мой первоначальный вопрос возник из-за попытки добавить дополнительные функциональные возможности в контекстное меню TextField. Раннее сообщение SO (https://stackoverflow.com/questions/32980159/javafx-append-to-right-click-menu-for-textfield/32980464#32980464) справедливо указывает, что добавление пунктов меню в существующее контекстное меню проблематично, предупреждает, что решение, предложенное в этом сообщении, вероятно, будет разбито под Java 9, а также ссылки на JEP 253 для получения дополнительной информации. – jfr

+0

Решение в вышеупомянутом сообщении связано с переопределением публичного TextInputControlSkin # populateContextMenu (ContextMenu). Это наиболее интересно, потому что этот метод отсутствует в API для TextInputControlSkin и TextFieldSkin, что является нечетным, поскольку метод и то, как он работает, похоже, имеет гораздо больше «скин», чем «поведение». Было также интересно отметить перекрестные ссылки между классами (скинами) и «поведением». – jfr

+0

Хотя метод populateContextMenu() не дает прямой ссылки на что-либо в классе «поведение», он использует внутренний класс (ContextMenuItem) для построения элементов меню, а внутренний класс ссылается на «поведение», которое не является конец истории, потому что упомянутое «поведение» относится к соответствующим классам «скин». – jfr

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

  • Нет связанных вопросов^_^