Как я могу получить длину содержания JTextField как пользовательские типы?

Здесь есть два решения:

  • Используйте Google Calendar API , чтобы подключиться к пользовательскому календарю и вставлять / обновлять события в определенном календаре, чтобы они соответствовали вашему приложению
  • Используйте сервер Caldav , чтобы разместить календарь пользователя на общедоступном URL-адресе, и добавьте его вручную в календарь Google.

. Я бы выбрал первое решение, которое позволит вашим событиям оставайся приватным

8
задан Luffy 4 May 2015 в 11:16
поделиться

3 ответа

Это - вероятно, не оптимальный путь (и это было некоторое время), но в прошлом я добавил DocumentListener к JTextField, и на любом из событий (вставьте, обновите, удалите), я:

evt.getDocument().getLength()

Который возвращает общую длину содержания текстового поля.

8
ответ дан 5 December 2019 в 10:44
поделиться

Это может быть связано с этой "ошибкой" (или скорее "функция")

Слушатели уведомляются относительно ключевых событий до обработки их, чтобы позволить слушателям "красть" события путем потребления их. Это дает совместимость с более старым awt понятием потребления событий.
"Введенное" событие не означает, что текст был введен в компонент. Это не ошибка, это - предназначенное поведение.

Возможное решение состоит в том, чтобы слушать ассоциированный документ

// Listen for changes in the text
myTextField.getDocument().addDocumentListener(new DocumentListener() {
  public void changedUpdate(DocumentEvent e) {
  // text was changed
}
public void removeUpdate(DocumentEvent e) {
  // text was deleted
}
public void insertUpdate(DocumentEvent e) {
  // text was inserted
}
});

Обратите внимание, что это работает, неважно, как текст изменяется; через сокращение/вставку буфера обмена, progamatic "setText ()" на TextField или пользователе, вводящем в поле на UI.

3
ответ дан 5 December 2019 в 10:44
поделиться

KeyEvents являются событиями низкого уровня, которые не являются соответствующими здесь [который звучит знакомым].

Как делает JTextField система знает, что символ был введен? Через ключ ввел событие (IIRC, сделанный через PL&F). Событие становится отправленным системному слушателю перед Вашим слушателем? Это могло бы или не могло бы сделать.

В этом случае Вы, вероятно, хотите перейти в Document и добавьте высокоуровневого слушателя. С Swing это - хорошая идея пойти для модели рано - интерфейсы класса 'J' являются несвязными. Если Вы прерываете входные данные, то Вы, вероятно, хотите пользовательскую модель (или в случае Document a DocumentFilter).

3
ответ дан 5 December 2019 в 10:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: