当前位置: 首页 > 面试题库 >

使用replaceSelection方法在JEditorPane中单击HTML链接

魏宏邈
2023-03-14
问题内容

我搜索了如何在中创建可点击的链接JEditorPane,然后发现了这个
问题:

是否可以用Java创建程序以创建要在
Chrome中链接的文本?

这非常有用,但是我的代码使用重复语句在
循环中添加链接:

JEditorPane jep = new JEditorPane();
jep.setContentType("text/html");
jep.setEditable(true);// Because replaceSelection can't work with disabled edit
for ( int i = 1; i <= 3; i++ ){
    jep.replaceSelection(
        "Welcome to <a href='https://stackoverflow.com/'>StackOverflow i </a>.");
}
jep.setEditable(false);

现在,它只显示没有可点击链接的文本。我要如何纠正?我真的需要replaceSelection方法。


问题答案:

使用replaceSelection()上的HTMLDocument插入件的原始字符串; 您
要插入HTML锚标记。您可以,

自己管理原始HTML文本,如下所示,然后setText()进行解析。

使用现有的HTMLEditorKit嵌套操作之一。

使用此处显示的自定义方法之一。

import java.awt.Desktop;
import java.awt.HeadlessException;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;

/**
 * @see https://stackoverflow.com/a/16447176/230513
 * @see https://stackoverflow.com/a/14170141/230513
 */
public class Test {

    public static void main(String[] argv) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                display();
            }
        });
    }

    private static String create(int i) {
        StringBuilder sb = new StringBuilder();
        sb.append("Welcome to <a href=");
        sb.append("'http://www.example.com'>Example ");
        sb.append(i);
        sb.append("</a>.<br>");
        return sb.toString();
    }

    private static void display() throws HeadlessException {
        JEditorPane jep = new JEditorPane();
        jep.setContentType("text/html");
        StringBuilder sb = new StringBuilder();
        sb.append("<b>Welcome</b>:<br><hr>");
        for (int i = 1; i <= 3; i++) {
            sb.append(create(i));
        }
        sb.append("<hr>");
        jep.setText(sb.toString());
        jep.setEditable(false);
        jep.addHyperlinkListener(new HyperlinkListener() {
            @Override
            public void hyperlinkUpdate(HyperlinkEvent e) {
                if (HyperlinkEvent.EventType.ACTIVATED.equals(e.getEventType())) {
                    System.out.println(e.getURL());
                    Desktop desktop = Desktop.getDesktop();
                    try {
                        desktop.browse(e.getURL().toURI());
                    } catch (Exception ex) {
                        ex.printStackTrace();
                    }
                }
            }
        });

        JFrame f = new JFrame("HyperlinkListener");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.add(jep);
        f.pack();
        f.setLocationRelativeTo(null);
        f.setVisible(true);
    }
}


 类似资料:
  • 问题内容: 在机械化中,我们可以使用follow_link或click_link单击链接。在美丽的汤中是否有类似的事情可以单击网页上的链接? 问题答案: 是HTML 解析器 。 进一步的讨论实际上取决于您所处的具体情况以及特定网页的复杂性。 如果您需要与网页进行交互:提交表单,单击按钮,滚动等-您需要使用利用真实浏览器的工具,例如。 例如,在某些情况下,如果提交表单时不涉及任何javascript

  • 我正在写一份时事通讯,你可以在这里找到: http://www.conrad-stanen.nl/nieuwsbrief/12_2015/ 所有链接工作正常。包括右侧的文本框和图像。 以电子邮件形式发送这种超文本标记语言格式适用于Mac邮箱,但对于Windows Outlook 2013,它会阻止右栏中的大部分链接,这意味着链接不可点击。 我已经尝试过使用带有模板的邮件黑猩猩,但它仍然会给出错误。

  • 问题内容: 我在Python中使用Selenium尝试单击鼠标悬停在该下拉菜单上时出现的下拉菜单中的链接。这是下拉菜单信息: 我试图单击“ a href”标签中的“文档”链接。当我将鼠标悬停在菜单上时,代码更改如下: 您可以在第二个ul标签中看到“ visible :: hidden”部分消失了。 我使用以下代码在页面上找到了元素: 如果我尝试使用以下方法单击下载按钮: 我收到一个错误,指出该元素

  • 问题内容: 我正在开发一个Swing应用程序,其中必须显示HTML文件。 我正在为此使用控件。它显示的是HTML文件的内容,但格式与实际HTML文件中的原始格式不同。 不支持该元素。与其加载目标文件,不如显示它。 Swing中是否还有其他内置控件来浏览HTML文件而不是? 我正在使用以下代码: 问题答案: 在核心Java中进行更高级的HTML呈现的最佳选择是使用基于JavaFX的组件,如向Java

  • 问题内容: 今天,我正在尝试测试一个可在Google主页(www.google.co.in)上使用的gmail链接。我能够启动fierfox窗口,并且能够执行将我带到Google主页的第一步,但是在此之后什么都没有发生,我也没有遇到任何运行时错误或日食异常。不知道webdriver发生了什么。我遇到了我已经在stakwave上发布的另一个程序的问题,因此,如果可以,请查看此链接- 为什么我的测试抛

  • 我在尝试使用Selenium WebDriver单击超链接时遇到了一个问题。我尝试使用CssSelector和XPath,但似乎都不起作用。我想做的就是点击谷歌文本。