java - Prettyprint 在 JTextArea/JEditorPane 中提升为数字
问题描述
我的程序包括一个多项式的 GUI,他们在 JTextArea 或 JEditorPane 中输入他们的多项式。
我试图找到一种方法,只要用户在文本区域中输入“^(数字)”,它就会改变外观以实际显示数字是字母或数字的指数。
因此,例如 n^2 将被视为数字 2,表示它是 n 的指数要好得多。
解决方案
不在 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 来组合属性。
推荐阅读
- java - 正则表达式从路径获取带或不带扩展名的文件名
- android - 为什么 CameraX 不能在 Android Studio 中将图片放大到我需要的大小?
- reactjs - 具有高阶函数的泛型
- android - 为什么我在小米设备上无法获取系统区域?
- entity-framework - 实体框架保存命令是否提交事务?
- node.js - Selenium-Webdriver:在 Chrome 中模拟触摸事件/滑动(受信任的)
- php - Phalcon 3.4.0 不使用 PHP 5.6.33-0+deb8u1 引导
- flutter - 颤振对话框内的复选框切换
- facebook - Facebook 应用程序审查流程以从公共页面访问提要
- node.js - 将 apache 服务器路由到 express.js 服务器