【问题标题】:Display clickable HTML links in JEditorPane在 JEditorPane 中显示可点击的 HTML 链接
【发布时间】:2012-11-26 15:07:39
【问题描述】:

我做了一些谷歌搜索,所有在 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);
            }

        }

    }

}

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

爱丽丝

【问题讨论】:

    标签: java html swing hyperlink jeditorpane


    【解决方案1】:

    您需要添加HyperlinkListener,而不是ActionListener

    见教程here

    【讨论】:

    • 问题:我做错了什么,从我可以看到我完全遵循这个:pastie.org/5499277
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-29
    • 2020-12-07
    • 2012-10-26
    • 2020-06-08
    • 2021-06-15
    • 2016-03-27
    • 1970-01-01
    相关资源
    最近更新 更多