1

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

        }

    }

}

在此先感谢(请随时指出我的代码中可以改进的任何内容)

艾里斯

4

1 回答 1

3

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

请参阅此处的教程。

于 2012-12-08T17:37:34.717 回答