Пример: добавление автозаполнения в JTextField

Автозаполнение может быть очень полезно практически в любом приложении, но его нетривиально реализовать. Итак, вот краткий пример того, как вы могли бы сделать это в Java-фреймворке Swing с JTextField (он также должен работать с JTextArea с небольшими изменениями). Этот пример представляет собой модифицированную версию примера Oracle . Код package com.example.myapp.console; import java.awt.event.ActionEvent; import java.util.Collections; import java.util.List; import javax.swing.AbstractAction; import javax.swing.JTextField; import javax.swing.SwingUtilities; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.text.BadLocationException; public class Autocomplete implements DocumentListener { private static enum Mode { INSERT, COMPLETION }; private JTextField textField; private final List<String> keywords; private Mode mode = Mode. [Далее]

Как использовать потоки в Java Swing

Программировать непросто, а добавление пользовательского интерфейса к функциональности действительно может усложнить жизнь. Тем более, что не все UI-фреймворки являются потокобезопасными (включая Swing). Итак, как мы можем эффективно обрабатывать пользовательский интерфейс, запускать рабочий код и обмениваться данными между ними, сохраняя при этом отзывчивость пользовательского интерфейса? К счастью для пользователей Swing, есть несколько вариантов, которые могут значительно упростить программирование графического интерфейса пользователя. Вот два из этих вариантов. Вызвать позже SwingUtilities.invokeLater() отлично подходит для обновления пользовательского интерфейса из другого потока. [Далее]