Prettyprint увеличен до чисел в JTextArea/JEditorPane

Моя программа включает графический интерфейс для полиномов, где они вводят свои полиномы в JTextArea или JEditorPane.

Я пытаюсь найти способ, чтобы всякий раз, когда пользователь вводит «^ (число)» в текстовую область, он менял внешний вид, чтобы фактически показать, что число является показателем степени буквы или числа.

так, например, n ^ 2 будет рассматриваться как число 2, представляющее, что это показатель степени n намного лучше.


person Job    schedule 24.04.2019    source источник
comment
Проверьте это: stackoverflow.com/a/462893/3692099   -  person Schokokuchen Bäcker    schedule 24.04.2019


Ответы (1)


Не в JTextArea, а в JEditorPane или JTextPane вы можете использовать StyledDocument.

При нажатии клавиши ^ (KeyEvent.VK_CIRCUMFLEX) вы добавляете HTML <sup>...</sup>, возможно, со стилями атрибутов в StyledDocument.

Это требует некоторой работы, в отличие от готовых математических решений @Schokokuchen_Bäcker.

Вы можете предоставить значок редактирования для ^, например [x], тем более, что на некоторых национальных клавиатурах ^ является мертвой клавишей для создания букв, таких как û. Еще больше работы.

Изменение атрибута символа для надстрочного индекса соответствует ^ в вашем представлении.

Поскольку JTextPane является дочерним классом JEditorPane, я бы использовал его.

JTextPane textPane = new JTextPane(document);
textPane.setEditable(true);

Element elememt = doc.getCharacterElement(docOffset);
if (StyleConstants.isSuperscript(element.getAttributes())) { ...

Можно использовать SimpleAttributeSet для составления атрибутов.

person Joop Eggen    schedule 07.10.2019