Я хочу, чтобы что-то было запущено как пользователем, обновляющим содержимое JTextArea, так и вручную, нажав JButton.
Это не имеет смысла для меня.
Почему при нажатии кнопки вызывается то же действие, что и при вводе текста пользователем в текстовую область?
Я раньше не использовал действия, но слышал, что они полезны для ситуаций.где вам нужно, чтобы что-то вызывалось несколькими элементами управления
Этот оператор предназначен для элементов управления, которые пользователь нажимает, например, JMenuItems, JButtons или нажатие клавиши Enter в текстовом поле.Обычно их можно использовать при использовании ActionListner.
DocumentListener не является ActionListener, поэтому, как я уже говорил ранее, использование Action не представляется целесообразным.
Я думаю, что вам нужночтобы уточнить ваши требования.
Редактировать, основываясь на разъяснениях
Если пользователь изменит эти другие значения, он может захотеть повторно проанализировать текст
Почему у пользователя есть выбор?Если вы измените шрифт, текст, передний план, фон текстовой области, компонент, который она автоматически перерисовывает, вам не нужно просить об этом.Если вы посмотрите на код этих методов, они всегда будут вызывать методы revalidate () и repaint ().
Разбор зависит от других значений, установленных в другом месте графического интерфейса;
Звучит так, будто вам нужен собственный класс.Может быть, ParsedTextArea или ParsedDocument.Этот класс будет содержать «свойства», которые можно установить в другом месте графического интерфейса.Это было бы важно для DocumentListener.Это также поддержит ваш метод "parseTheText".Таким образом, всякий раз, когда свойство изменяется или генерируется DocumentEvent, вы автоматически вызываете метод "parseTheText".Таким образом, вам не нужна отдельная кнопка, и компонент всегда будет синхронизирован, потому что анализ выполняется автоматически.