首页 > 解决方案 > Prettyprint 在 JTextArea/JEditorPane 中提升为数字

问题描述

我的程序包括一个多项式的 GUI,他们在 JTextArea 或 JEditorPane 中输入他们的多项式。

我试图找到一种方法,只要用户在文本区域中输入“^(数字)”,它就会改变外观以实际显示数字是字母或数字的指数。

因此,例如 n^2 将被视为数字 2,表示它是 n 的指数要好得多。

标签: javaswingjtextareajeditorpane

解决方案


不在 JTextArea 中,但在 JEditorPane 或 JTextPane 中,您可以使用 StyledDocument。

^( KeyEvent.VK_CIRCUMFLEX) 的按键按下事件中,您<sup>...</sup>可能会在StyledDocument.

这需要一些工作,而不是@Schokokuchen_Bäcker 的现成数学解决方案。

^您可以为类似 [ x ]提供一个编辑图标,特别是因为某些国家键盘^是创建类似 .x 等字母的死键û。更多的工作。

然后,上标字符属性的更改对应^于您的表示中的 a。

由于 JTextPane 是 JEditorPane 的子类,我会使用那个。

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

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

可以使用 SimpleAttributeSet 来组合属性。


推荐阅读