问题标签 [styleddocument]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 如何将 TextPane 中的 StyledDocument 保存到 .doc 文件中?
我不知道这是否可能,但我想做的是在 .doc 文件中保存一个样式化文档(用户可以更改文本:粗体、下划线、斜体和 3 种字体大小) - 所以他可以稍后使用任何其他支持样式文本的文本编辑器自行打开它。
我写了下面的代码......编辑器工作,我可以在文本上应用样式但是当我保存时,它将文本保存为黑色,没有样式。我无法弄清楚问题出在哪里。也许行动不保存。我尝试使用作家和缓冲作家,但它没有用。我还尝试使用 HTML 编辑器工具包,但它根本不起作用 - 它保存了一个空白文档。
也许有人知道如何保存样式?感谢帮助:)
java - 比较 JTextPane 中的短字符串和长字符串,并将长字符串的字符写成其他颜色
我希望你能帮助我解决我的问题。
我有两个字符串,两者几乎相等。
字符串 A 就像:“你好,我的朋友”
字符串 B 就像:“你好!我的!朋友”
现在我想比较两个字符串并将结果写入另一个字符串。结果必须是字符串 B,其中所有与字符串 A 不同的字符均为蓝色。
这 ”!” 是例如。“!” 可以是任何类型的文本,包括空格。
我必须用JTextPane/StyledDocument
.
你能给我一些例子或想法来得到这个吗?
谢谢你。
java - 将图像添加到与线条重叠的 JTextPane 以节省空间
我有一个带有 StyledDocument 的 JTextPane,需要在高于字体的文本之间添加一个图像。这意味着通常这条线会变高:
我的目标是让图像略微重叠,因此它使用更少的空间。在 MCVE 中,我通过返回较小的垂直跨度来实现这一点,IconView
如下所示:
所以基本上它认为图像不那么高,但无论如何都会完全绘制它。
这主要是有效的,但是有两个问题:
- 额外的高度仍然只添加在顶部,如果均匀分布可能会更好。
- 但更重要的是,有时底部不会被绘制,例如在上下滚动时:
很容易理解,因为下半部分并不是图像预期的位置。
我现在的问题是,有没有更好(不那么老套)的方法来防止图像占用这么多空间?或者至少是一种修复绘图的方法?我已经对代码进行了一些研究,但我不确定哪个部分负责决定绘制什么或如何最好地更改它而不弄乱其他任何东西。
java - JTextPane 和撤消管理器样式更改
我的情况:我有一个带有自己的语法突出显示的JTextPane 。我设置了它,以便当用户停止输入时,它使用 setCharacterAttributes() 方法更新文本中的样式。
我的问题:当没有对样式执行这些更新时,撤消管理器按预期工作。但是当我使用它时,撤消管理器会将这些样式更改计为实际的可撤消操作!意思是按 Ctrl+z (按下时我必须撤消它)它只是取消我输入的最后一个字符的颜色。而不是实际删除/撤消它。
我怎么会得到它,所以撤消和重做只会影响文本更改,而不影响StyledDocument中的样式/字体更改?
谢谢你。
java - 循环中的 Java StyledDocument insertString()
我目前正在使用 JSwing 编写一个非常简单的程序。JTextArea ("textArea")
里面有一个JScrollPane ("textPane")
。我设法TextArea
用一个StyledDocument
命名的doc编辑了其中的文本和内容。但是,当我想在 while 循环中向该文档中插入一个字符串时,所有文本都会在循环结束后立即出现。我想要的效果是在Thread.sleep()
.
这是我的代码示例:
哪里doStoryMode(a, b)
是调用doc.insertString(...)
. 该程序正在运行,但我无法一一看到事情发生。我试图通过编写textPane.repaint()
and来解决这个问题textArea.repaint()
,但都没有成功。我在网上搜索,有人说可以通过invokeAndWait()
方法解决,但是当我这样做时,显示错误消息“无法invokeAndWait
从事件调度程序线程调用”。
请帮我解决一下这个。我对这些概念真的很陌生。提前致谢。
java - JTextPane 通过 setCharacterAttributes 删除背景集
我在自己的编辑器上工作,我想为用户可能搜索的文本添加背景颜色。找到文本并设置背景颜色不是问题,问题是如何在焦点(突出显示)移动时去除背景颜色?
这设置了亮点:
但是我怎样才能在不影响前景色的情况下再次去除高光呢?因为编辑器支持语法高亮,前景色可以是任何颜色。
我唯一能想到的就是简单地重置整个StyledDocument
,然后再次在整个事情上运行我的 highlight 方法......但这似乎是一个非常低效的想法。
java - 您可以在 jTextPane 的同一段文本中使用或组合两个不同的 AttributeSet 吗?
我有一个JTextPane
显示一些文本的。它是动态生成的。程序从套接字接收文本的样式和文本本身。
例如,我希望文本的某些部分加粗,其他部分居中,有些部分既粗体又居中。我用这段代码设置了一个样式
有没有办法做类似的事情:
我不想为我需要的每个s组合创建一个单独SimpleAttributeSet
的组合,因为在真正的程序中会有更多的选项,而且它很难阅读,而且会让我发疯。Style
谢谢
java - 删除 JTextPane 行并保持样式
我正在使用 JTextPane 和 StyledDocument 来设置消息样式,并且我想清除消息或仅清除最旧的消息。我可以使用以下方法轻松清除所有内容:
但是,如果我想清除除某些行之外的所有内容,则不确定是否/如何完成。我试过
但问题是它删除了内容样式。
这是显示问题的简单演示。有没有简单的方法来做到这一点?
java - 如何将输入文本的样式设置为紧跟在 JTextPane 中的光标位置之后的样式
我正在开发一个数据库程序,其中 GUI 有多个输入区域,其中一些是 JTextPanes,用户可以在其中设置粗体、下划线和斜体样式。例如,当用户将光标紧邻已经是粗体的区域时,我希望他们键入的下一个文本也同样是粗体。到目前为止,唯一发生的事情是在粗体文本之后立即键入的文本是粗体的,但我似乎无法使在粗体文本之前键入的文本也同样是粗体。
我不确定这一切都不会令人困惑,所以这里有一个例子:假设句子“Java很有趣”。已经在其中一个 JTextPanes 中。
如果用户将光标放在“is”的左侧或右侧,我希望他们在旁边键入的任何内容也都是粗体。像这样,“Java fooisbar 的乐趣”。
到目前为止,我只得到“Java foo isbar fun”。
下面是我用来向 JTextPane 的插入符号添加样式检测功能的方法,以及我认为可以做到这一点的方法。
我也尝试StyledEditorKit.BoldAction().actionPerformed(null)
在 boldButton.setSelected(true) 之前或之后添加一个额外的 new ,但这没有任何效果。我也尝试tp.getStyledDocument().setCharacterAttributes(caretPosition -1, 1, asPrev, true)
过,虽然这确实使下一个文本输入粗体,但结果是不可预测的,随机换行和丢失字符发生。Changing boldButton.setSelected(true)
toboldButton.doClick()
没有任何效果,也没有使用我的 ButtonAction 类将文本设置为粗体。
并且,作为参考,粗体按钮的代码:
奇怪的是,如果我将光标设置在粗体文本之前,然后单击 UI 中的粗体切换按钮,下一个键入的文本会变为粗体。但我似乎无法以编程方式实现这一点。有任何想法吗?