2012-12-08 48 views
1

我已經做了一些Google搜索,並且所有的方法都在html中實現了可點擊的鏈接,但對它們的工作方式沒有太多的解釋(至少不足以讓我理解)。任何人願意詳細闡述一下?在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); 
      } 

     } 

    } 

} 

在此先感謝(隨意點出任何可以在我的代碼更好)

AIRIS

回答

3

您需要添加一個HyperlinkListener,不ActionListener

查看教程here

+0

問題:我做錯了什麼,從我所看到的我完全遵循這一點:http://pastie.org/5499277 – Airis

+0

我明白了,謝謝。 – Airis