我想在JPanel中插入超鏈接(以便點擊我轉到網址) 可能嗎? 如果是,我該怎麼做?我想在JPanel中插入超鏈接
0
A
回答
1
我們一直在使用這樣的事情:
public class UrlTextPane extends JTextPane {
private final Pattern urlPattern = Pattern.compile(UrlUtil.URL_REGEX);
public UrlTextPane() {
this.setEditable(false);
this.addHyperlinkListener(new UrlHyperlinkListener());
this.setContentType("text/html");
}
private class UrlHyperlinkListener implements HyperlinkListener {
@Override
public void hyperlinkUpdate(final HyperlinkEvent event) {
if (event.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
try {
Desktop.getDesktop().browse(event.getURL().toURI());
} catch (final IOException e) {
throw new RuntimeException("Can't open URL", e);
} catch (final URISyntaxException e) {
throw new RuntimeException("Can't open URL", e);
}
}
}
};
@Override
/**
* Set the text, first translate it into HTML:
*/
public void setText(final String input) {
final StringBuilder answer = new StringBuilder();
answer.append("<html><body style=\"font-size: 8.5px;font-family: Tahoma, sans-serif\">");
final String content = StringEscapeUtils.escapeHtml(input);
int lastIndex = 0;
final Matcher matcher = urlPattern.matcher(content);
while(matcher.find()) {
//Append everything since last update to the url:
answer.append(content.substring(lastIndex, matcher.start()));
final String url = content.substring(matcher.start(), matcher.end()).trim();
if(UrlUtil.isValidURI(url)) {
answer.append("<a href=\"" + url + "\">"+url+"</a>");
} else {
answer.append(url);
}
lastIndex = matcher.end();
}
//Append end:
answer.append(content.substring(lastIndex));
answer.append("</body></html>");
super.setText(answer.toString().replace("\n", "<br />"));
}
}
0
3
+0
@ stacker我想,當我點擊超鏈接,我去提到的地址。那裏沒有解釋 – 2011-04-18 14:53:21
0
我寫了一個簡單的函數,它的文本,鏈接,你要顯示的位置,並返回一個JLabel
。當鼠標懸停在文本上時,它會變成藍色並帶有下劃線,並使光標成爲指針,否則它會變黑,並且不帶下劃線和默認光標。
public static JLabel makeHyperLink(final String s, final String link, int x, int y)
{
final JLabel l = new JLabel(s);
l.addMouseListener(new MouseAdapter()
{
@Override
public void mouseExited(MouseEvent arg0)
{
l.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
l.setText(s);
}
@Override
public void mouseEntered(MouseEvent arg0)
{
l.setCursor(new Cursor(Cursor.HAND_CURSOR));
l.setText(String.format("<HTML><FONT color = \"#000099\"><U>%s</U></FONT></HTML>", s));
}
@Override
public void mouseClicked(MouseEvent arg0)
{
try
{
URI uri = new URI(link);
if (Desktop.isDesktopSupported())
Desktop.getDesktop().browse(uri);
} catch (Exception e)
{
}
}
});
l.setBounds(x, y, s.length()*5, 20);
l.setToolTipText(String.format("go to %s", link));
return l;
}
如果代碼的任何一部分不明確,聯繫我;)
相關問題
- 1. 如何在UITextView中插入超鏈接?
- 2. 在Outlook主體中插入超鏈接
- 3. 超鏈接插入DIV
- 4. 插入超鏈接,並刪除超級鏈接在Javascript
- 5. 將超鏈接插入到XWPFTableRow中
- 6. 插入超鏈接(CSS) - WordPress的博客
- 7. SSRS 2005:無法插入超鏈接
- 8. 從表單插入超鏈接到pdf
- 9. 在JPanel中插入按鈕
- 10. 想要XML文件中的超鏈接
- 11. 如何在GWT中將圖像插入到超鏈接中
- 12. 我想在cakephp中的電子郵件中插入一個鏈接
- 13. 在pyplot交互模式中插入超鏈接
- 14. 是否可以在ReST文字塊中插入超鏈接?
- 15. 在watson對話框對話框中插入超鏈接
- 16. 如何在標籤文本中插入超鏈接?
- 17. 在WPF中的指定位置插入超鏈接FlowDocument
- 18. 在wysihtml5編輯器中插入超鏈接時設置焦點
- 19. 在郵件正文中插入文本,超鏈接和表
- 20. 插入鏈接
- 21. 在Flowplayer中嵌入超鏈接
- 22. 我想要超鏈接在不同的地方
- 23. 我想在瀏覽器中打開新標籤,當我按下asp.net超鏈接
- 24. 想要使不活動的超鏈接
- 25. 我不想在我的列表視圖中超過30個插入
- 26. 將超鏈接插入範圍的一部分(單詞中)
- 27. 如何將超鏈接插入到Outlook Appointment的RTFBODY屬性中?
- 28. 如何在JLabel中插入JPanel?
- 29. 我想用一個鏈接
- 30. 我想從以下鏈接
UrlUtil包含一個URL正則表達式和一個方法,試圖解析URL到一個Java URI(這是非常嚴格的)。 – 2011-04-18 13:35:34