Spec-Zone.ru › OpenJDK 27

Класс ZoneView

java.lang.Object
javax.swing.text.View
javax.swing.text.CompositeView
javax.swing.text.BoxView
javax.swing.text.ZoneView
Все реализованные интерфейсы:
SwingConstants
public class ZoneView extends BoxView
ZoneView — это реализация View, создающая зоны, дочерние представления для которых не создаются и не сохраняются до тех пор, пока они не понадобятся для отображения или преобразования модели и представления. Это позволяет значительно снизить потребление памяти в случаях, когда представленная модель очень велика: объекты представлений создаются только для области, которая в данный момент просматривается или редактируется. Размер дочерних элементов можно оценить тем или иным способом либо вычислить асинхронно, сохранив только результат.

ZoneView расширяет BoxView, предоставляя контейнер, реализующий зоны для своих дочерних элементов. Зоны — это специальные реализации View (дочерние элементы экземпляра этого класса), представляющие только часть модели, за которую отвечает экземпляр ZoneView. Зоны не создают дочерние представления до тех пор, пока не предпринимается попытка их отобразить. Представление в форме контейнера хорошо подходит для этого, поскольку:

  • Контейнеры широко используются в представлениях, и наличие контейнера с таким поведением дает широкие возможности подключить это поведение к иерархии представлений с помощью фабрики представлений.
  • Элементы контейнера располагаются плиткой в одном направлении, поэтому их легко надежно разделить на зоны.
  • Контейнеры обычно имеют простую связь с моделью (то есть создают дочерние представления, непосредственно представляющие дочерние элементы).
  • Размер контейнеров легче оценить, чем размер некоторых других фигур.

Поведение по умолчанию задается двумя свойствами: maxZoneSize и maxZonesLoaded. Установка maxZoneSize в Integer.MAX_VALUE приведет к созданию только одной зоны. Это фактически превратит представление в реализацию шаблона «Декоратор». Установка maxZonesLoaded в Integer.MAX_VALUE приведет к тому, что зоны никогда не будут выгружаться. Для простоты зоны создаются на границах, соответствующих дочерним элементам элемента, за который отвечает представление. Зоны могут быть любой реализацией View, но реализация по умолчанию основана на AsyncBoxView, эффективно поддерживающем достаточно большие зоны.

Начиная с:
1.3
См. также:
  • View

Краткое описание полей

Поля, объявленные в классе View

BadBreakWeight, ExcellentBreakWeight, ForcedBreakWeight, GoodBreakWeight, X_AXIS, Y_AXIS
Модификатор и тип Поле Описание
static final int BadBreakWeight
Вес, указывающий, что представление является неудачным местом для разрыва при форматировании.
static final int ExcellentBreakWeight
Вес, указывающий, что представление поддерживает разрыв и является очень подходящим местом для него.
static final int ForcedBreakWeight
Вес, указывающий, что представление поддерживает разрыв и его необходимо разбить, чтобы корректно представить при размещении в представлении, форматирующем дочерние элементы путем их разбиения.
static final int GoodBreakWeight
Вес, указывающий, что представление поддерживает разрыв, но, вероятно, существуют более подходящие места.
static final int X_AXIS
Ось для операций форматирования/разбиения.
static final int Y_AXIS
Ось для операций форматирования/разбиения.

Поля, объявленные в интерфейсе SwingConstants

BOTTOM, CENTER, EAST, HORIZONTAL, LEADING, LEFT, NEXT, NORTH, NORTH_EAST, NORTH_WEST, PREVIOUS, RIGHT, SOUTH, SOUTH_EAST, SOUTH_WEST, TOP, TRAILING, VERTICAL, WEST
Модификатор и тип Поле Описание
static final int BOTTOM
Константа ориентации контейнера, обозначающая его нижнюю сторону.
static final int CENTER
Центральное положение в области.
static final int EAST
Направление по компасу: восток (вправо).
static final int HORIZONTAL
Горизонтальная ориентация.
static final int LEADING
Обозначает передний край текста для языков с направлением письма слева направо и справа налево.
static final int LEFT
Константа ориентации контейнера, обозначающая его левую сторону.
static final int NEXT
Обозначает следующее направление в последовательности.
static final int NORTH
Направление по компасу: север (вверх).
static final int NORTH_EAST
Направление по компасу: северо-восток (вверх и вправо).
static final int NORTH_WEST
Направление по компасу: северо-запад (вверх и влево).
static final int PREVIOUS
Обозначает предыдущее направление в последовательности.
static final int RIGHT
Константа ориентации контейнера, обозначающая его правую сторону.
static final int SOUTH
Направление по компасу: юг (вниз).
static final int SOUTH_EAST
Направление по компасу: юго-восток (вниз и вправо).
static final int SOUTH_WEST
Направление по компасу: юго-запад (вниз и влево).
static final int TOP
Константа ориентации контейнера, обозначающая его верхнюю сторону.
static final int TRAILING
Обозначает задний край текста для языков с направлением письма слева направо и справа налево.
static final int VERTICAL
Вертикальная ориентация.
static final int WEST
Направление по компасу: запад (влево).

Краткое описание конструкторов

Конструктор Описание
ZoneView(Element elem, int axis)
Создает ZoneView.

Краткое описание методов

Модификатор и тип Метод Описание
protected View createZone(int p0, int p1)
Создает представление для зоны, соответствующей заданному диапазону в модели (который должен находиться в пределах ответственности этого объекта).
int getMaximumZoneSize()
Возвращает текущее максимальное значение размера зоны.
int getMaxZonesLoaded()
Возвращает текущее значение количества зон, которые можно загружать одновременно.
protected int getViewIndexAtPosition(int pos)
Возвращает индекс дочернего представления, соответствующего заданной позиции в модели.
void insertUpdate(DocumentEvent changes, Shape a, ViewFactory f)
Уведомляет о том, что в документ в области ответственности этого представления был вставлен элемент.
protected boolean isZoneLoaded(View zone)
Определяет, загружена ли зона.
protected void loadChildren(ViewFactory f)
Загружает все дочерние элементы для инициализации представления.
void removeUpdate(DocumentEvent changes, Shape a, ViewFactory f)
Уведомляет о том, что из документа в области ответственности этого представления был удален элемент.
void setMaximumZoneSize(int size)
Задает желаемый максимальный размер зоны.
void setMaxZonesLoaded(int mzl)
Задает текущее значение количества зон, которые можно загружать одновременно.
protected void unloadZone(View zone)
Выгружает зону (переводит зону в состояние, позволяющее экономить память).
protected boolean updateChildren(DocumentEvent.ElementChange ec, DocumentEvent e, ViewFactory f)
Поведение суперкласса пытается обновить дочерние представления, что в данном случае нежелательно, поскольку дочерние элементы являются зонами и изменения связанного элемента не оказывают на них непосредственного влияния.
protected void zoneWasLoaded(View zone)
Вызывается зоной при ее загрузке.

Методы, объявленные в классе BoxView

baselineLayout, baselineRequirements, calculateMajorAxisRequirements, calculateMinorAxisRequirements, childAllocation, flipEastAndWestAtEnds, forwardUpdate, getAlignment, getAxis, getChildAllocation, getHeight, getMaximumSpan, getMinimumSpan, getOffset, getPreferredSpan, getResizeWeight, getSpan, getViewAtPoint, getWidth, isAfter, isAllocationValid, isBefore, isLayoutValid, layout, layoutChanged, layoutMajorAxis, layoutMinorAxis, modelToView, paint, paintChild, preferenceChanged, replace, setAxis, setSize, viewToModel
Модификатор и тип Метод Описание
protected void baselineLayout(int targetSpan, int axis, int[] offsets, int[] spans)
Вычисляет положение и размер каждого дочернего представления в этом BoxView с учетом targetSpan, то есть ширины (или высоты) доступной для работы области.
protected SizeRequirements baselineRequirements(int axis, SizeRequirements r)
Вычисляет требования к размеру этого BoxView, анализируя размеры каждого дочернего представления.
protected SizeRequirements calculateMajorAxisRequirements(int axis, SizeRequirements r)
Вычисляет требования к размеру по главной оси axis.
protected SizeRequirements calculateMinorAxisRequirements(int axis, SizeRequirements r)
Вычисляет требования к размеру по второстепенной оси axis.
protected void childAllocation(int index, Rectangle alloc)
Выделяет область для дочернего представления.
protected boolean flipEastAndWestAtEnds(int position, Position.Bias bias)
Определяет направление расположения следующего представления.
protected void forwardUpdate(DocumentEvent.ElementChange ec, DocumentEvent e, Shape a, ViewFactory f)
Передает заданное DocumentEvent дочерним представлениям, которые необходимо уведомить об изменении модели.
float getAlignment(int axis)
Определяет желаемое выравнивание этого представления вдоль оси.
int getAxis()
Возвращает свойство оси размещения элементов плиткой.
Shape getChildAllocation(int index, Shape a)
Возвращает выделенную область для заданного дочернего представления.
int getHeight()
Возвращает текущую высоту контейнера.
float getMaximumSpan(int axis)
Определяет максимальный размер этого представления вдоль оси.
float getMinimumSpan(int axis)
Определяет минимальный размер этого представления вдоль оси.
protected int getOffset(int axis, int childIndex)
Возвращает смещение текущего макета заданного дочернего элемента.
float getPreferredSpan(int axis)
Определяет предпочтительный размер этого представления вдоль оси.
int getResizeWeight(int axis)
Возвращает вес изменения размера.
protected int getSpan(int axis, int childIndex)
Возвращает размер текущего макета заданного дочернего элемента.
protected View getViewAtPoint(int x, int y, Rectangle alloc)
Возвращает дочернее представление по заданным координатам.
int getWidth()
Возвращает текущую ширину контейнера.
protected boolean isAfter(int x, int y, Rectangle innerAlloc)
Определяет, находится ли точка за выделенной областью.
protected boolean isAllocationValid()
Остаются ли выделенные области дочерних элементов действительными?
protected boolean isBefore(int x, int y, Rectangle innerAlloc)
Определяет, находится ли точка перед выделенной областью.
protected boolean isLayoutValid(int axis)
Определяет, действителен ли макет вдоль заданной оси.
protected void layout(int width, int height)
Выполняет компоновку контейнера
void layoutChanged(int axis)
Объявляет макет недействительным вдоль оси.
protected void layoutMajorAxis(int targetSpan, int axis, int[] offsets, int[] spans)
Выполняет компоновку контейнера по главной оси (то есть по оси, которую он представляет).
protected void layoutMinorAxis(int targetSpan, int axis, int[] offsets, int[] spans)
Выполняет компоновку контейнера по второстепенной оси (то есть по оси, перпендикулярной представляемой им оси).
Shape modelToView(int pos, Shape a, Position.Bias b)
Обеспечивает отображение координатного пространства модели документа в координатное пространство соответствующего ей представления.
void paint(Graphics g, Shape allocation)
Отображает BoxView с использованием заданной поверхности и области на этой поверхности.
protected void paintChild(Graphics g, Rectangle alloc, int index)
Рисует дочерний элемент.
void preferenceChanged(View child, boolean width, boolean height)
Вызывается дочерним элементом, чтобы сообщить об изменении его предпочтительного размера.
void replace(int index, int length, View[] elems)
Объявляет макет недействительным и изменяет размер кэша запросов/выделенных областей.
void setAxis(int axis)
Задает свойство оси размещения элементов плиткой.
void setSize(float width, float height)
Задает размер представления.
int viewToModel(float x, float y, Shape a, Position.Bias[] bias)
Обеспечивает отображение координатного пространства представления в логическое координатное пространство модели.

Методы, объявленные в классе CompositeView

getBottomInset, getInsideAllocation, getLeftInset, getNextEastWestVisualPositionFrom, getNextNorthSouthVisualPositionFrom, getNextVisualPositionFrom, getRightInset, getTopInset, getView, getViewAtPosition, getViewCount, getViewIndex, modelToView, setInsets, setParagraphInsets, setParent
Модификатор и тип Метод Описание
protected short getBottomInset()
Возвращает нижний внутренний отступ.
protected Rectangle getInsideAllocation(Shape a)
Преобразует неизменяемую выделенную область, переданную представлению, в изменяемую область, представляющую внутреннюю часть (то есть границы заданной области без верхнего, левого, нижнего и правого внутренних отступов).
protected short getLeftInset()
Возвращает левый внутренний отступ.
protected int getNextEastWestVisualPositionFrom(int pos, Position.Bias b, Shape a, int direction, Position.Bias[] biasRet)
Возвращает следующую визуальную позицию курсора в направлении на восток или запад.
protected int getNextNorthSouthVisualPositionFrom(int pos, Position.Bias b, Shape a, int direction, Position.Bias[] biasRet)
Возвращает следующую визуальную позицию курсора в направлении на север или юг.
int getNextVisualPositionFrom(int pos, Position.Bias b, Shape a, int direction, Position.Bias[] biasRet)
Позволяет определить следующую визуально представленную позицию модели, в которой можно разместить курсор.
protected short getRightInset()
Возвращает правый внутренний отступ.
protected short getTopInset()
Возвращает верхний внутренний отступ.
View getView(int n)
Возвращает n-е представление в этом контейнере.
protected View getViewAtPosition(int pos, Rectangle a)
Возвращает дочернее представление, соответствующее заданной позиции в модели.
int getViewCount()
Возвращает количество дочерних представлений этого представления.
int getViewIndex(int pos, Position.Bias b)
Возвращает индекс дочернего представления, соответствующего заданной позиции в модели.
Shape modelToView(int p0, Position.Bias b0, int p1, Position.Bias b1, Shape a)
Обеспечивает отображение координатного пространства модели документа в координатное пространство соответствующего ей представления.
protected void setInsets(short top, short left, short bottom, short right)
Задает внутренние отступы представления.
protected void setParagraphInsets(AttributeSet attr)
Задает внутренние отступы на основе атрибутов абзаца, указанных в заданных атрибутах.
void setParent(View parent)
Задает родительское представление.

Методы, объявленные в классе View

append, breakView, changedUpdate, createFragment, forwardUpdateToView, getAttributes, getBreakWeight, getContainer, getDocument, getElement, getEndOffset, getGraphics, getParent, getStartOffset, getToolTipText, getViewFactory, getViewIndex, insert, isVisible, modelToView, remove, removeAll, updateLayout, viewToModel
Модификатор и тип Метод Описание
void append(View v)
Добавляет одно дочернее представление.
View breakView(int axis, int offset, float pos, float len)
Пытается разбить это представление по заданной оси.
void changedUpdate(DocumentEvent e, Shape a, ViewFactory f)
Получает от документа уведомление об изменении атрибутов в области ответственности этого представления.
View createFragment(int p0, int p1)
Создает представление, соответствующее части элемента.
protected void forwardUpdateToView(View v, DocumentEvent e, Shape a, ViewFactory f)
Передает DocumentEvent заданному дочернему представлению.
AttributeSet getAttributes()
Возвращает атрибуты, используемые при отображении.
int getBreakWeight(int axis, float pos, float len)
Определяет, насколько подходящим является место разрыва в этом представлении.
Container getContainer()
Возвращает контейнер, содержащий представление.
Document getDocument()
Возвращает модель, связанную с представлением.
Element getElement()
Возвращает структурную часть объекта, которой соответствует это представление.
int getEndOffset()
Возвращает часть модели, за которую отвечает это представление.
Graphics getGraphics()
Возвращает Graphics для отображения.
View getParent()
Возвращает родительское представление.
int getStartOffset()
Возвращает часть модели, за которую отвечает это представление.
String getToolTipText(float x, float y, Shape allocation)
Возвращает текст всплывающей подсказки в указанном месте.
ViewFactory getViewFactory()
Возвращает реализацию ViewFactory, обеспечивающую работу иерархии представлений.
int getViewIndex(float x, float y, Shape allocation)
Возвращает индекс дочернего представления, соответствующего заданной позиции в представлении.
void insert(int offs, View v)
Вставляет одно дочернее представление.
boolean isVisible()
Возвращает логическое значение, указывающее, видно ли представление.
Shape modelToView(int pos, Shape a)
Устарело.
void remove(int i)
Удаляет один из дочерних элементов в заданной позиции.
void removeAll()
Удаляет все дочерние элементы.
protected void updateLayout(DocumentEvent.ElementChange ec, DocumentEvent e, Shape a)
Обновляет макет в ответ на получение уведомления об изменении модели.
int viewToModel(float x, float y, Shape a)
Устарело.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создает и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли этот объект какому-либо другому объекту.
protected void finalize()
Устарело, планируется удаление: этот элемент API будет удален в будущей версии.
Финализация устарела и подлежит удалению в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ждать пробуждения, обычно в результате вызова notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ждать пробуждения, обычно в результате вызова notify или interrupt либо по истечении заданного времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ждать пробуждения, обычно в результате вызова notify или interrupt либо по истечении заданного времени.

Подробное описание конструкторов

ZoneView

public ZoneView(Element elem, int axis)
Создает ZoneView.
Параметры:
elem — элемент, за который отвечает это представление
axis — либо View.X_AXIS, либо View.Y_AXIS

Подробное описание методов

getMaximumZoneSize

public int getMaximumZoneSize()
Возвращает текущее максимальное количество символов в зоне.
Возвращает:
текущее максимальное количество символов в зоне

setMaximumZoneSize

public void setMaximumZoneSize(int size)
Задает требуемое максимальное количество символов в зоне. Зона может превысить этот размер, если размер отдельного дочернего представления больше, поскольку зоны формируются по границам дочерних представлений.
Параметры:
size — количество символов, которое может представлять зона, прежде чем будет предпринята попытка разбить ее на зоны меньшего размера.

getMaxZonesLoaded

public int getMaxZonesLoaded()
Возвращает текущее значение максимального количества зон, которые могут быть загружены одновременно.
Возвращает:
текущее значение максимального количества зон, которые могут быть загружены одновременно

setMaxZonesLoaded

public void setMaxZonesLoaded(int mzl)
Задает максимальное количество зон, которые могут быть загружены одновременно. Выбрасывает IllegalArgumentException, если mzl меньше 1.
Параметры:
mzl — требуемое максимальное количество активно загруженных зон; должно быть больше 0
Выбрасывает:
IllegalArgumentException — если mzl < 1

zoneWasLoaded

protected void zoneWasLoaded(View zone)
Вызывается зоной при ее загрузке. Это происходит, когда предпринимается попытка отобразить зону или выполнить преобразование координат модели и представления для зоны, которая находилась в выгруженном состоянии. Реализация проверяет, достигнуто ли максимальное количество зон, и в этом случае выгружает самую старую зону.
Параметры:
zone — только что загруженное дочернее представление.

unloadZone

protected void unloadZone(View zone)
Выгружает зону (переводит ее в состояние, позволяющее экономить память). Предполагается, что зоны представляют собой подмножество дочерних элементов элемента, за который отвечает это представление. Поэтому реализация по умолчанию просто удаляет все дочерние элементы.
Параметры:
zone — дочернее представление, которое требуется перевести в выгруженное состояние.

isZoneLoaded

protected boolean isZoneLoaded(View zone)
Определяет, находится ли зона в загруженном состоянии. Предполагается, что зоны представляют собой подмножество дочерних элементов элемента, за который отвечает это представление. Поэтому реализация по умолчанию возвращает true, если у представления есть дочерние элементы. param zone дочернее представление
Параметры:
zone — зона
Возвращает:
находится ли зона в загруженном состоянии.

createZone

protected View createZone(int p0, int p1)
Создает представление для зоны, соответствующей указанному диапазону модели (который должен находиться в пределах области ответственности этого объекта). Этот метод вызывается логикой управления зонами для создания новых зон. Подклассы могут изменить реализацию зоны, переопределив этот метод.
Параметры:
p0 — начало требуемой зоны. Должно быть >= getStartOffset() и < getEndOffset(). Это значение также должно быть < p1.
p1 — конец требуемой зоны. Должен быть > getStartOffset() и <= getEndOffset(). Это значение также должно быть > p0.
Возвращает:
представление зоны, соответствующей указанному диапазону модели

loadChildren

protected void loadChildren(ViewFactory f)
Загружает все дочерние представления для инициализации представления. Этот метод вызывается методом setParent. Метод переопределен так, чтобы не загружать дочерние представления напрямую (так как они создаются зонами). Этот метод создает начальный набор зон. Однако зоны фактически заполняются только при попытке отобразить их или выполнить преобразование координат модели и представления.
Переопределяет:
loadChildren в классе CompositeView
Параметры:
f — фабрика представлений
См. также:
  • CompositeView.setParent(View)

getViewIndexAtPosition

protected int getViewIndexAtPosition(int pos)
Возвращает индекс дочернего представления, соответствующего указанной позиции в модели.
Переопределяет:
getViewIndexAtPosition в классе CompositeView
Параметры:
pos — позиция >= 0
Возвращает:
индекс представления, соответствующего указанной позиции, или -1, если ни одно представление этой позиции не соответствует

updateChildren

protected boolean updateChildren(DocumentEvent.ElementChange ec, DocumentEvent e, ViewFactory f)
Поведение суперкласса пытается обновить дочерние представления, что в данном случае нежелательно, поскольку дочерними элементами являются зоны, на которые изменения связанного элемента не влияют напрямую. Метод переопределен: он ничего не делает и возвращает false.
Переопределяет:
updateChildren в классе View
Параметры:
ec — сведения об изменении элемента, за который отвечает это представление. При вызове этого метода значение не должно быть null
e — сведения об изменении связанного документа
f — фабрика для создания дочерних представлений
Возвращает:
соответствуют ли дочерние представления дочерним элементам элемента, за который отвечает это представление. Некоторые представления создают дочерние представления, соответствующие части элемента, за который они отвечают, и должны возвращать false. Эта информация используется для определения того, следует ли передавать представлениям диапазона добавленных элементов уведомления об изменениях
См. также:
  • View.insertUpdate(DocumentEvent, Shape, ViewFactory)
  • View.removeUpdate(DocumentEvent, Shape, ViewFactory)
  • View.changedUpdate(DocumentEvent, Shape, ViewFactory)

insertUpdate

public void insertUpdate(DocumentEvent changes, Shape a, ViewFactory f)
Уведомляет о вставке данных в документ в области, за которую отвечает это представление. В основном обработка делегируется суперклассу, но метод переопределен для обновления соответствующей зоны (то есть для определения необходимости разделить зону на две или более зон).
Переопределяет:
insertUpdate в классе View
Параметры:
changes — сведения об изменении связанного документа
a — текущее выделение области представления
f — фабрика для повторного создания представления, если у него есть дочерние элементы
См. также:
  • View.insertUpdate(DocumentEvent, Shape, ViewFactory)

removeUpdate

public void removeUpdate(DocumentEvent changes, Shape a, ViewFactory f)
Уведомляет об удалении данных из документа в области, за которую отвечает это представление. В основном обработка делегируется суперклассу, но метод переопределен для обновления соответствующих зон (то есть для определения необходимости удалить зоны или объединить их с другой зоной).
Переопределяет:
removeUpdate в классе View
Параметры:
changes — сведения об изменении связанного документа
a — текущее выделение области представления
f — фабрика для повторного создания представления, если у него есть дочерние элементы
См. также:
  • View.removeUpdate(DocumentEvent, Shape, ViewFactory)

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API