我的程序包含一个多项式 GUI,可以在 JTextArea 或 JEditorPane 中输入多项式。
我正在尝试找到一种方法,每当用户在文本区域中输入“^(数字)”时,它就会改变外观,以实际显示该数字是字母或数字的指数。
例如,n^2 会被视为数字 2,表示它是 n 的指数,效果更好。
最佳答案
不在 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 来组合属性。
关于java - Prettyprint 在 JTextArea/JEditorPane 中提升为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55834839/