问题标签 [jtextpane]

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.

0 投票
2 回答
3222 浏览

java - 使用 JTextPane,消耗的鼠标事件仍会传播到插入符号更新/选择更新

我似乎遇到了 JTextPane 的问题。我已扩展 JTextPane 以呈现浮动图像,因为 JTextPane 图标功能不适合我的目的。我希望用户能够单击图像,并执行某些事件。但是,当我单击图像时,即使我使用 evt.consume(),插入符号和选择也会在 JTextPane 中更新。我通常希望与图像交互的单击和鼠标事件根本不会影响插入符号的位置或选择。相关代码:

我什至调用了 getMouseListeners 并验证我自己的鼠标侦听器是数组中的最后一个,我读到侦听器是从最高到最低索引调用的,这意味着如果我的侦听器调用消耗,它应该是最后一个对事件采取行动的。为什么我的鼠标单击事件仍在更新插入符号呢?这是外观和感觉的问题吗?

0 投票
2 回答
1195 浏览

java - 在 Java 中使用 HTML 感知组件

我有以下问题:

我显示一个带有 JTextPane 的 HTML 文档。

在我的 HTML 文本中有­ (在 w3.org 上很害羞)可以进行软连字符。我的问题是,没有出现连字符。是否有某种我不知道的标志来使用这些选项?

以下程序将显示问题:

我的预期行为是,我的文本将被分解到下一行:

正如第一个块所示,但带有连字符。

编辑: 它适用于大多数浏览器,但我在这里不使用网络浏览器。

编辑 2: 我使用 JTextPane,我不知道 Java 是否会在内部使用一些安装 HTML 渲染引擎。

0 投票
2 回答
1886 浏览

java - 检索 JTextPane AttributeSet 值

使用该JTextPane方法insertIcon()时,javadoc 说明"...This is represented in the associated document as an attribute of one character of content."

如何检索有关我插入的图标的信息?我试过getCharacterAttributes()只有"Fetches the character attributes in effect at the current location of the caret, or null."

是否存在一种方法来查找文本选择中的所有属性,或者在某个索引处,而不仅仅是在当前插入符号位置?

编辑
这是我拼凑起来的一些示例代码,用于获取嵌入图标的文件名。

0 投票
2 回答
606 浏览

java - 以 HTML 格式查看 JTextPane 中的样式文本

我基本上用 JTextPane 和一些样式选项(粗体、斜体、下划线和中心/右/左对齐选项)制作了一个简单的文本编辑器,我想知道是否有任何简单的方法来查看 HTML 版本?

我最终想要做的是有一个“导出为 HTML”类型的选项,它只有纯文本,但它是用 HTML 标签格式化的,而不是被样式化的。

谢谢

0 投票
1 回答
195 浏览

java - JTextPane 和 XHTMLRenderer:何时使用哪个

在哪些情况下,您会在带有 HTMLDocument 的 JTextPane 上使用 XHTMLRenderer(飞碟),反之亦然?这主要是偏好问题还是在某些情况下是更自然的选择?

0 投票
1 回答
1374 浏览

java - 使用 JColorChooser 设置文本颜色

我正在尝试使用 JTextPane 制作文本编辑器,但在设置所选文本颜色时遇到问题。这是最好的方法(但显然,不起作用):

关于如何让它发挥作用的任何建议?还是有更好的方法?

谢谢

0 投票
2 回答
1387 浏览

java - 单击 JButton 以设置文本样式后保持选择

我正在制作一个相当简单的文本编辑器,我对我的样式按钮有疑问。当我突出显示文本并单击“粗体”按钮时,文本按预期加粗,但我的选择不再可见。我仍然可以取消加粗、斜体或下划线,但您无法看到选择的内容。所以,我想知道是否有一个设置可以让我点击按钮,但保留我的选择?我尝试了 JMenuItem 而不是 JButton,这似乎有效,但它使我的工具栏看起来很糟糕。下面的示例代码。

任何帮助表示赞赏。

0 投票
1 回答
1850 浏览

java - 如何判断 JEditorPane/TextPane 文档或页面是否已完成加载?

我正在尝试将 URL 加载到 JEditorPane 或 JTextPane 中,但 URL 是动态生成的 PHP 页面。然后我想在我的 Java 应用程序中处理 PHP 页面的输出。PHP 页面将始终输出至少一个字符串,我可以使用它来检查它是否正确生成。

如果我在使用设置页面后尝试直接处理页面

即使我为 JEditorPane 指定了文本/纯文本内容类型,它也会返回一个空白 HTML 页面:

我认为这是因为 PHP 页面尚未完成加载,因为下面的方法每次都会返回正确的输出。

目前我正在设置页面,然后启动一个 Swing Timer 并每 200 毫秒检查一次页面是否包含正确生成的字符串:

这工作正常。在当前服务器负载和当前正在加载的 PHP 页面的复杂性下,循环在第一次迭代后停止,但它似乎有点低效,我不想继续检查页面是否需要几秒钟才能加载在繁重的服务器负载或更复杂的 PHP 页面上。

我想知道是否有更好的方法来检查页面是否已完成加载。

我想知道是否可以使用 JEditorPane.read(inputStream) 方法或在 Swing Background Worker 线程中设置页面,然后在调用 worker 的 done() 时处理 PHP 页面的输出。

是否有更好的方法来加载 PHP 输出,将其从动态生成的输出中直接读取到字符串中,而不使用编辑器窗格,因为编辑器窗格无论如何都不可见?

希望这足够清楚。

谢谢。

0 投票
1 回答
1780 浏览

java - 切换 JToggleButton 而不单击它,并取消设置样式

我有几个切换按钮可以以以下形式向文本添加样式:

而且我还有各种样式功能(颜色、左/右/中心对齐等)。我想要做的是当我调用一个函数(在这种情况下,我想基本上制作一个新文档)时,切换按钮被切换到关闭状态,并且所有样式都恢复为默认值。

目前我只是将框架名称设置为无标题(以前是我正在使用的文档的名称),并将窗格文本设置为“”,但这保留了我在上一个文档中设置的所有样式。有更好的方法吗?

谢谢

0 投票
1 回答
2440 浏览

java - Jtextpane 单击以在选择时创建弹出菜单效果与预期不符

我有一个 JTextPane 坐在 JFrame 中,弹出菜单通过 JTextPane.setComponentPopupMenu 方法分配给 JTextPane。

我想给 JTextPane 一个“类似单词”的弹出行为。我的意思是,如果您在当前文本选择之外单击鼠标右键,插入符号将重新定位到您右键单击的位置,同时禁用影响文本选择的菜单选项(例如剪切、复制或粗体)。如果您在当前文本选择中右键单击,将出现弹出窗口,其中包含启用文本选择的选项,文本选择将持续存在,并且插入符号不会移动。

问题是我似乎找不到可以将处理选择更改的代码放在哪里。我试过了:

  • 使用在弹出窗口可见之前触发的“PopupMenuWillBecomeVisible”事件。传递给此方法的事件不包含任何鼠标事件信息,因此我无法使用 viewtomodel 找出如何修改选择。我可以使用 MouseInfo 但这似乎充其量是可疑的。
  • 在 JTextPane 或 JFrame 中使用 MousePressed/MouseReleased 事件。显然,当弹出菜单被触发时,这些事件都不会被调用。事实上,我仍然无法确定我的弹出菜单的父组件是什么。(我确实在 Windows 中读到“MouseReleased”是弹出触发器,而在其他系统中“MousePressed”是触发器。我都试过了,但都没有成功)。

所以,我想问题是我似乎无法找到一个地方来放置代码,在弹出菜单变得可见之前将调用它,但是知道触发弹出菜单的 mouseEvent 。我一定在这里遗漏了一些东西。