java - 在 JEditorPane 中显示可点击的 HTML 链接

标签 java html swing hyperlink jeditorpane

我做了一些谷歌搜索,所有在 html 中实现可点击链接的方法都没有太多解释它们是如何工作的(至少我理解的不够)。有人愿意详细说明一下吗?

我的代码:

import javax.imageio.ImageIO;
import javax.swing.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;

public class WebBrowser extends JFrame {
    public JPanel
        address_panel, window_panel;

    public JLabel
        address_label;

    public JTextField
        address_tf;

    public JEditorPane
        window_pane;

    public JScrollPane
        window_scroll;

    public JButton
        address_b;

    private Go go = new Go();

    public WebBrowser() throws IOException {
        try {
            UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
        } catch (ClassNotFoundException e1) {
            e1.printStackTrace();
        } catch (InstantiationException e1) {
            e1.printStackTrace();
        } catch (IllegalAccessException e1) {
            e1.printStackTrace();
        } catch (UnsupportedLookAndFeelException e1) {
            e1.printStackTrace();
        }
        Image image = null;
        try {
            image = ImageIO.read(new File("images/icon.gif"));
        } catch (IOException e) {
            e.printStackTrace();
        }
        address_label = new JLabel(" address: ", SwingConstants.CENTER);
        address_tf = new JTextField("");
        address_tf.addActionListener(go);
        address_b = new JButton("Go");
        address_b.addActionListener(go);

        window_pane = new JEditorPane("http://(server):(port)/");
        window_pane.setContentType("text/html");
        window_pane.setEditable(false);

        address_panel = new JPanel(new BorderLayout());
        window_panel = new JPanel(new BorderLayout());

        address_panel.add(address_label, BorderLayout.WEST);
        address_panel.add(address_tf, BorderLayout.CENTER);
        address_panel.add(address_b, BorderLayout.EAST);

        window_scroll = new JScrollPane(window_pane);
        window_panel.add(window_scroll);

        Container pane = getContentPane();
        pane.setLayout(new BorderLayout());

        pane.add(address_panel, BorderLayout.NORTH);
        pane.add(window_panel, BorderLayout.CENTER);

        setIconImage(image);
        setTitle("web browser");
        setSize(800,600);
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);

    }

    public class Go implements ActionListener{

        public void actionPerformed(ActionEvent ae){

            try {

                window_pane.setPage("http://(server):(port)/"+address_tf.getText());

            } catch (MalformedURLException e) {
                window_pane.setText("MalformedURLException: " + e);
            } catch (IOException e) {              
                window_pane.setText("IOException: " + e);
            }

        }

    }

}

提前致谢(请随时指出我的代码中任何可以改进的地方)

艾瑞斯

最佳答案

您需要添加一个HyperlinkListener,而不是ActionListener

参见教程 here .

关于java - 在 JEditorPane 中显示可点击的 HTML 链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13780010/

相关文章:

java - 如何在其他处理选项卡中使用 public class frome .java 文件?

java - 高 Perm Generation 和低 Old Generation

javascript - 选择导致 CSS 元素改变颜色的 HTML 链接?

javascript - 使用javascript将excel文件读取到数组中

java - 如何在 Scala Swing 应用程序中使用 scala.swing.Applet?

java - 给组件添加JComponents可能会出现什么问题

java - 无法使用 GridBagLayout 将 JLabel 替换为其他 JLabel

java - 显示使用 java 在配置单元中创建表

java - 如何在 Java 中屏蔽 HTML-Unicode

html - div旋转时如何将文本左对齐?