- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我相信 JEditorPane
.我需要简单的编辑器。我已经解决了加载和修改包含自定义(两个)标签的 HTML 的问题(参见 my older post )。它可以正确显示文档,我现在甚至可以编辑它。我可以编写文本、删除字符或我的自定义元素。我赢得了一场战斗,但还没有赢得这场 war 。遗憾的是,下一步也很有问题。我无法插入我的自定义标签。
我有一个自定义操作:
import my.own.HTMLEditorKit; //extends standard HTMLEditorKit
import my.own.HTMLDocument; //extends standard HTMLDocument
class InsertElementAction extends StyledTextAction {
private static final long serialVersionUID = 1L;
public InsertElementAction(String actionName) {
super(actionName);
}
@Override
public void actionPerformed(ActionEvent e) {
JEditorPane editor = getEditor(e);
if (editor == null)
return;
HTMLDocument doc = (HTMLDocument) editor.getDocument();
HTMLEditorKit ekit = (HTMLEditorKit) editor.getEditorKit();
int offset = editor.getSelectionStart();
try {
ekit.insertHTML(doc, offset, "<span>ahoj</span>", 0, 0, HTML.Tag.SPAN);
Element ele = doc.getRootElements()[0];
ele = ele.getElement(1).getElement(0);
doc.setInnerHTML(ele, "<bar medium=\"#DEFAULT\" type=\"packaged\" source=\"identifier\" />");
}
catch (BadLocationException ble) {
throw new Error(ble);
}
catch (IOException ioe) {
throw new Error(ioe);
}
}
}
它正常工作。我可以插入 span
元素。但是我不能以这种方式插入非标准标签。我可以插入 code
, span
等等,但不是我的标签。对于我的标签,我不得不使用这个:
ekit.insertHTML(doc, offset, "x<bar medium=\"#DEFAULT\" type=\"packaged\" source=\"identifier\" />x", 0, 0, null);
有两个关键问题
当我插入 span
时元素转化为<p>paragraph</p>
, 我得到 <p>par<span>ahoj</span>agraph</p>
正如预期的那样。然而,未知标记始终作为 body
的子项插入元素和结果(例如对于未知标签 x
)是 <p>par</p><x>ahoj</x><p>agraph</p>
.
工作很累。几个星期以来,我一直相信这个相对简单的任务。我已经废了。如果插入不起作用,我可以将其全部废弃...
最佳答案
关于java - JEditorPane、HTMLEditorKit - 插入自定义标签的自定义操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7608168/
我有一个 tomcat 服务器并使用 jedis 客户端连接到它。 我使用的jedis版本是“3.0.0-m1”,tomcat 8.0.15 连接后几个小时后,我看到以下异常。有什么帮助吗? redi
我正在使用 Jedis 连接到 Redis 并将数据推送到列表中。我正在为 JSON 数据使用 rpush。 这些是我执行的步骤: 从 Rabbitmq 获取数据 从 JSON 数据中收集信息并准备一
我正在尝试在 vim 中使用 python-jedi,但目前它完全无法使用,因为它试图在奇怪的时间完成代码。 我添加了以下行: let g:jedi#popup_on_dot = 0 到我的 vim
我正在使用 jedi-vim,输入以下内容后,出现“未找到模式”错误: import numpy numpy. 但是,如果我运行以下 python 脚本,我会得到一长串完成列表: import jed
以下 Java 代码将一百万对整数插入到 Redis 中。 public class JedisInsertion { public static byte[] fromInt(in
我在几个线程中看到了答案,但没有解决我的问题,因为我的问题偶尔会出现,如果有人有任何想法,请问这个问题。 我使用的是jedis 2.8.0版本,Spring Data redis 1.7.5版本。和用
我的 Storm 类使用 Redis 队列来收集数据。 我尝试运行我的 Storm jar storm jar jar_file_name.jar Topology_name configuratio
我通过 jedis 在 java 上有这段代码: int shb1 = jds.storeHypnoBeats(id1, arr1); 调用这个函数: int storeHypnoBeats(Stri
我是 jedi-vim 的新手,我不知道如何跳转其他文件中的函数定义。 jedi-vim 's doc是: 以下是其中的一部分: NOTE: subject to change! let g:jedi
我刚刚注意到,每当我对任何 Delphi 2010 项目进行增量编译 (ctrl-F9) 时,我的项目中引用的所有 JEDI 单元都会重新编译,尽管它们没有以任何方式进行更改。事实上,如果我创建一个新
我正在使用 Jedi usb hid 组件连接 HID 设备并对其进行读取和写入。我无法写入设备。我一直在使用这个代码。 type TReport = Packed record ReportID:
我正在使用 Jedis,我无法直接连接到 Redis,我必须使用代理。我可以使用 socks 代理通过 Jedis 连接到 Redis 吗? 请你帮帮我。 问候。 最佳答案 我一直在寻找解决方案,但找
我在 vim 中通过 YCM 使用 jedi,在我的项目中看到一些奇怪的行为,关于在 jediHttp 服务器上使用 usages 端点。基本上它只能找到我项目中类或函数的一小部分用法。它确实找到了当
我正在尝试连接到我的虚拟机 Redis package nosql; import redis.clients.jedis.Jedis; public class NoSQL { public sta
我在我用作生产者/消费者队列的 Redis 队列之上使用 Java 库 Jedis。它易于设置并且运行良好。 消费者代码如下 List messages = jedis.blpop(0, redisQ
什么是jedis事务执行成功响应? jedis 似乎会返回 1 作为成功响应。如果交易包括两个操作,我的以下代码是否有效? List ret = jedisAdapter.exec(tx, jedi
我在看jedis源码的时候发现 connection = connectionHandler.getConnectionFromSlot(JedisClusterCRC16.getSlot(key))
我在 jedis 客户端的帮助下使用 redis。在此处附加键值设置/获取的代码片段。在这里,我希望我的 jedisPool 只被初始化一次,但它被初始化了多次。不知道我哪里错了。用它挠我的头几天。我
当我像下面的代码一样使用 jedis 时: public class JedisTest extends Sync { private static final String _SET_KEY
我最近不得不使用 Jedis 库,它是一个很棒的库。我知道 Redis 是用 C 编写的,Jedis 只是将 Java 包装在 C 周围吗?光看Jedis源码是想不通的。谁能解释一下? 最佳答案 Je
我是一名优秀的程序员,十分优秀!