Подход с лучшим повторным использованием мог бы заключаться в создании галочки с помощью класса CSS для псевдоэлемента ::before
или ::after
:
<button class="checkmark-after" type="button">I will display </button>
<p class="checkmark-before x2"> Done!</p>
<a href="http://example.com" class="checkmark-after bordered"> Google</a>
<p class="checkmark-before x2 checkmark-after yellow bordered">Combined!</p>
Ну, я бы порекомендовал выполнять нагрузку на процессор в другом потоке, чтобы он не прерывал обычные задачи с графическим интерфейсом.
Это было бы лучшим решением. (вместо того, чтобы пытаться обойти проблему)
* Редактировать * Вы можете вычислить подсказки для каждого слова в JEditorPane
и сохранить их в Map
. Тогда все, что вам нужно сделать, это получить доступ к подсказке из Map
, если она изменится.
В идеале люди не будут двигать мышь и печатать одновременно. Таким образом, вы можете вычислить всплывающие подсказки при изменении текста и просто вытянуть их из Map
в mouseMoved()
.
Вы можете показать всплывающее окно самостоятельно. Прослушайте события mouseMoved (), запустите / остановите таймер, а затем отобразите всплывающее окно со следующим кодом:
Сначала вам понадобятся PopupFactory, Popup и ToolTip:
private PopupFactory popupFactory = PopupFactory.getSharedInstance();
private Popup popup;
private JToolTip toolTip = jEditorPane.createToolTip();
, чтобы показать или спрятать подсказку:
private void showToolTip(MouseEvent e) {
toolTip.setTipText(...);
int x = e.getXOnScreen();
int y = e.getYOnScreen();
popup = popupFactory.getPopup(jEditorPane, toolTip, x, y);
popup.show();
}
private void hideToolTip() {
if (popup != null)
popup.hide();
}
Это даст вам настраиваемую задержку и массу неприятностей:)