2013-02-13 109 views
1

我想让JEditorPane中的所有链接都可点击。我试图使用这个answer的代码,但可能我做错了什么,因为我点击链接时没有任何反应。这里是我的代码:JEditorPane中的可点击HTML链接

JEditorPane news = new JEditorPane(); 
news.setSize(Size.L_NEWS); 
news.setLocation(Position.L_NEWS); 
news.setFocusable(false); 
news.setBackground(new Color(255, 255, 255, 0)); 
news.setEditable(false); 
news.setEnabled(false); 
news.setOpaque(false); 
news.setVisible(true); 
news.setEditorKit(JEditorPane.createEditorKitForContentType("text/html")); 
news.setText(getNewsHTML.getNewestNews()); 
try{ 
    UIManager.setLookAndFeel(
    UIManager.getSystemLookAndFeelClassName()); 
} 
catch(Exception e){ 
    e.printStackTrace(); 
} 
news.addHyperlinkListener(new HyperlinkListener() { 
    public void hyperlinkUpdate(HyperlinkEvent e) { 
     if(e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { 
      if(Desktop.isDesktopSupported()) { 
       try { 
        Desktop.getDesktop().browse(e.getURL().toURI()); 
       } 
       catch (IOException | URISyntaxException e1) { 
        e1.printStackTrace(); 
       } 
      } 
     } 
    } 
} 
); 
login_form.add(news); 

在这里 - 我的进口(可能他们的问题):

import java.awt.Color; 
import java.awt.Desktop; 
import java.awt.Dimension; 
import java.awt.Graphics; 
import java.awt.Point; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.event.KeyAdapter; 
import java.awt.event.KeyEvent; 
import java.awt.event.MouseAdapter; 
import java.awt.event.MouseEvent; 
import java.awt.event.MouseMotionAdapter; 
import java.awt.image.BufferedImage; 
import java.io.IOException; 
import java.net.URI; 
import java.net.URISyntaxException; 

import javax.imageio.ImageIO; 
import javax.swing.BorderFactory; 
import javax.swing.ImageIcon; 
import javax.swing.JButton; 
import javax.swing.JEditorPane; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JOptionPane; 
import javax.swing.JPasswordField; 
import javax.swing.JTextField; 
import javax.swing.UIManager; 
import javax.swing.border.Border; 
import javax.swing.event.HyperlinkEvent; 
import javax.swing.event.HyperlinkListener; 

有什么不对?我没有任何输出到Eclipse的控制台。

+1

我想尽管可能这'news.setEnabled(false);和/或 'news.setFocusable(false);'可能会给问题。不要禁用它/使它不能获得焦点这可以简单地通过使其不可编辑(通过' news.setEditable(false);')完成... – 2013-02-13 20:33:27

+0

它现在可以工作。谢谢! – xaxes 2013-02-13 20:36:02

回答

5

从我的意见:

见我简单的例子here

http://i.stack.imgur.com/SglJF.png

你的问题就在这里:

news.setEnabled(false); 

不要将其设置为禁用或它不会能捕捉像鼠标点击等事件。

而且不知道为什么你有:

news.setFocusable(false); 
news.setVisible(true); 

组件并不需要设置可见刚刚添加到容器中,使容器可见。也不要让它不可聚焦,因为这可能会导致问题。你的setEditable(false)应该是足够的(因为用户将无法编辑它,无论focusability)