2013-02-13 1 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; 

에 어떤 문제가 있습니까? 필자는 이클립스 콘솔에 출력물이 없다. 내 의견에서

+1

이 'news.setEnabled (false);'및/또는 'news.setFocusable (false);' 문제. 비활성화하지 마십시오/초점을 얻지 못하게하십시오.이 작업은 완료하지 않은 상태에서 간단히 수행 할 수 있습니다 ( news.setEditable (false);)) ... –

+0

이제 작동합니다. 고맙습니다! – xaxes

답변

5

:

news.setEnabled(false); 

망가이 비활성화로 설정하거나 늘 수있을 :

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

귀하의 문제가 여기에있다 :

내 간단한 예 here를 참조하십시오 마우스 클릭 등과 같은 이벤트를 잡으십시오.

또한210

당신이 왜 있는지가 :

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

구성 요소는 컨테이너에 추가하고 컨테이너가 볼 수 있도록 눈에 보이는 설정할 필요가 없습니다. 나중에 문제가 발생할 수 있으므로 초점을 맞추지 마십시오. setEditable(false)으로 충분해야합니다 (사용자가 포커스 가능 여부에 관계없이 편집 할 수 없으므로)