Java窗格用超链接替换所选文本

Java窗格用超链接替换所选文本,java,html,swing,hyperlink,jeditorpane,Java,Html,Swing,Hyperlink,Jeditorpane,我正在编写一个程序,它使用一个JEditorPane来制作一个简单的编辑器,它使用超链接来允许用户使用一个简单的超链接侦听器在不同的页面之间跳转 问题是我想让用户能够选择一些文本并将其转换为链接。我发现很多例子都是通过鼠标右键点击来选择HTMLDocument中的元素,但我也希望可以通过键盘快捷键来实现 通过搜索和实验,我想出了以下方法: public void createLink() { HTMLEditorKit kit = new HTMLEditorKit(); try

我正在编写一个程序,它使用一个JEditorPane来制作一个简单的编辑器,它使用超链接来允许用户使用一个简单的超链接侦听器在不同的页面之间跳转

问题是我想让用户能够选择一些文本并将其转换为链接。我发现很多例子都是通过鼠标右键点击来选择HTMLDocument中的元素,但我也希望可以通过键盘快捷键来实现

通过搜索和实验,我想出了以下方法:

public void createLink() {
    HTMLEditorKit kit = new HTMLEditorKit();
    try {
        String text = jEditorPane1.getSelectedText();
        jEditorPane1.replaceSelection("");
        kit.insertHTML((HTMLDocument) jEditorPane1.getDocument(),
                       jEditorPane1.getCaretPosition(), 
                       "<a href=\"" + text + "\">" + text + "</a>", 
                       0, 0, HTML.Tag.A);
    } catch (BadLocationException | IOException ex) {
        Logger.getLogger(Editor.class.getName()).log(Level.SEVERE, null, ex);
    }
}
public void createLink(){
HTMLEditorKit=新的HTMLEditorKit();
试一试{
String text=jEditorPane1.getSelectedText();
jEditorPane1.replaceSelection(“”);
kit.insertHTML((HTMLDocument)jEditorPane1.getDocument(),
jEditorPane1.getCaretPosition(),
"", 
0,0,HTML.Tag.A);
}捕获(BadLocationException | IOException ex){
Logger.getLogger(Editor.class.getName()).log(Level.SEVERE,null,ex);
}
}

但这似乎有点丑陋,我不知道什么样的情况会导致问题,比如试图在链接中放置链接,或者重叠链接。是否有更合理的解决方案将所选文本映射到html文档中的元素?

HTMLEditorKit仅支持HTML3.2,因此您可能会遇到几个问题。如果您的目标是3.2版以外的HTML标记,那么JavaFX将为您提供更好的服务。如果您不想使用JavaFX,那么Swing还有其他实现,例如。如果您想从头开始学习一些完整的示例,请尝试(古老但有指导意义的)

从文件中:

默认支持由该类提供,该类支持HTML版本3.2(带有一些扩展),并且正在向版本4.0迁移

最早可以根据XML模式验证的HTML版本是XHTML1.0,因此使用HTMLEditorKit查找所有异常情况将是一项挑战。你可能会有一些运气