Spec-Zone .ru
спецификации, руководства, описания, API
След: Интернационализация
Урок: Работа с текстом
Работа с Двунаправленным текстом с Классом JTextComponent
Домашняя страница > Интернационализация > Работа с текстом

Работа с Двунаправленным текстом с Классом JTextComponent

Этот раздел обсуждает, как работать с двунаправленным текстом с JTextComponent class. Двунаправленный текст является текстом, который содержит текст, который работает в двух направлениях, слева направо и справа налево. Примером двунаправленного текста является арабский текст (который работает справа налево), которые содержат числа (которые работают слева направо). Более трудно вывести на экран и управлять двунаправленным текстом; однако JTextComponent дескрипторы эти проблемы для Вас.

Следующие темы затрагиваются:

Для получения дополнительной информации об этих проблемах, или если Вы хотите больше управления в обработке этих проблем, см. Работу с Двунаправленным текстом в 2-D Графическом следе.

Определение Направленности Двунаправленного текста

Выборка BidiTextComponentDemo.java, который основан на TextComponentDemo.java, двунаправленный текст дисплеев в a JTextPane объект. В большинстве случаев платформа Java может определить направленность двунаправленного текста Unicode:

BidiTextComponentDemo.java

Явно Определяющий текст Выполненное Направление в Объектах JTextComponent

Можно определить направление выполнения Document объект a JTextComponent объект. Например, следующий оператор определяет что текст в JTextPane объект textPane выполнения справа налево:

textPane.getDocument().putProperty(
    TextAttribute.RUN_DIRECTION,
    TextAttribute.RUN_DIRECTION_RTL);

Альтернативно, можно определить компонентную ориентацию определенного Swing, компонентно-ориентированного на локали. Например, следующие операторы определяют что компонентная ориентация объекта textPane основано на локали SA площади:

Locale arabicSaudiArabia = 
    new Locale.Builder().setLanguage("ar").setRegion("SA").build();

textPane.setComponentOrientation(
    ComponentOrientation.getOrientation(arabicSaudiArabia));

Поскольку направление выполнения арабского языка справа налево, направление выполнения текста, содержавшегося в textPane объект справа налево также.

См., что раздел Устанавливает Компонентную Ориентацию для получения дополнительной информации.

Отображение и Перемещение Каре

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

По умолчанию, a JTextComponent объект создает контурную карту (типа Keymap) это совместно используется всеми JTextComponent экземпляры как контурная карта значения по умолчанию. Контурная карта позволяет приложению связывать нажатия клавиш с действием. Контурная карта значения по умолчанию (для JTextComponent объекты, которые поддерживают перемещение каре) включает привязку между перемещением каре вперед и назад с левыми и правыми клавишами со стрелками, который поддерживает перемещение каре через двунаправленный текст.

Тестирование хита

Часто, расположение в пространстве устройства должно быть преобразовано в текстовое смещение. Например, когда пользователь щелкает мышью по выбираемому тексту, расположение мыши преобразовывается в текстовое смещение и используется в качестве одного конца диапазона выбора. Логически, это - инверсия расположения каре.

Можно присоединить слушателя каре экземпляра JTextComponent. Слушатель каре позволяет Вам обработать события каре, которые происходят, когда каре перемещается или когда выбор в текстовом компоненте изменяется. Вы присоединяете слушателя каре с addCaretListener метод. См., Как Записать Слушателю Каре для получения дополнительной информации.

Выделение Выборов

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

JTextComponent объекты реализуют логическое выделение. Это означает, что выбранные символы всегда непрерывны в текстовой модели, и области выделения позволяют быть несмежной. Следующее является примером логического выделения:

BidiTextComponentDemo: логическое выделение

Установка Компонентной Ориентации

Менеджеры по расположению Swing понимают, как локаль влияет на UI; не необходимо создать новое расположение для каждой локали. Например, в локали, куда текст течет справа налево, менеджер по расположению расположит компоненты в той же самой ориентации.

Выборка InternationalizedMortgageCalculator.java был локализован для английского языка, Соединенные Штаты; английский язык, Соединенное Королевство; французский язык, Франция; французский язык, Канада; и арабский язык, Саудовская Аравия.

Следующее использование локаль en-US:

Ипотечный калькулятор, локаль en-US

Следующее использование локаль SA площади:

Ипотечный калькулятор, локаль SA площади

Отметьте, что компоненты были размечены в том же самом направлении как соответствующая локаль: слева направо для en-US и справа налево для SA площади. InternationalizedMortgageCalculator.java выборка вызывает методы applyComponentOrientation и getOrientation определить направление его компонентов локалью:

private static JFrame frame;

// ...

private static void createAndShowGUI(Locale currentLocale) {

    // Create and set up the window.
    // ...
    // Add contents to the window.
    // ...
    frame.applyComponentOrientation(
        ComponentOrientation.getOrientation(currentLocale));
    // ...
  }

Выборка InternationalizedMortgageCalculator.java требует следующих файлов ресурсов:


Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Нормализация текста
Следующая страница: Интернационализация Сетевых Ресурсов