java - Prettyprint 在 JTextArea/JEditorPane 中提升为数字

标签 java swing jtextarea jeditorpane

我的程序包含一个多项式 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/

相关文章:

java - 如何调用使用可能未初始化的数组作为参数的方法?

java - 不止一次改变外观?

java - 在 Java GUI 中延迟操作的任何方法

java - 使用hadoop jar时如何增加堆大小?

java - 代码适用于嵌入式 Apache Tomcat 8,但不适用于 9。有什么变化?

java - 使用 Java 为视障人士放大屏幕

java - 删除 JScrollPane 内的边框

java - 无法替换 jTextArea 中的返回字符

java - JTextArea 与 String 之间的转换

java - 如何使用 maven 在我的 github 工作流程中根据 google java 格式格式化代码