我想在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. 我想將輸入值插入鏈接
- 2. 插入超鏈接在.NET
- 3. 在TextBlock中插入超鏈接
- 4. 如何在UITextView中插入超鏈接?
- 5. 在Userform VBA中插入超鏈接
- 6. 在WebGrid中插入超鏈接
- 7. 在Outlook主體中插入超鏈接
- 8. 超鏈接插入DIV
- 9. 插入超鏈接,並刪除超級鏈接在Javascript
- 10. 將超鏈接插入到XWPFTableRow中
- 11. Applescript插入超鏈接到MSWord評論
- 12. SSRS 2005:無法插入超鏈接
- 13. 如何插入超鏈接VBScript
- 14. 從表單插入超鏈接到pdf
- 15. 插入超鏈接(CSS) - WordPress的博客
- 16. PHP的超級鏈接插入錯誤
- 17. 我想在Android中顯示超鏈接項目的列表。
- 18. 在JPanel中插入按鈕
- 19. 想要XML文件中的超鏈接
- 20. 如何在GWT中將圖像插入到超鏈接中
- 21. 我想在cakephp中的電子郵件中插入一個鏈接
- 22. 在wysihtml5編輯器中插入超鏈接時設置焦點
- 23. Sencha,GXT 3,在網格中插入超鏈接
- 24. 在WPF中的指定位置插入超鏈接FlowDocument
- 25. 在郵件正文中插入文本,超鏈接和表
- 26. 作爲超鏈接在Access數據庫中插入圖像
- 27. 在pyplot交互模式中插入超鏈接
- 28. 在php中插入超鏈接mysql查詢
- 29. 如何在使用python的圖像中插入超鏈接?
- 30. 如何在標籤文本中插入超鏈接?
UrlUtil包含一個URL正則表達式和一個方法,試圖解析URL到一個Java URI(這是非常嚴格的)。 – 2011-04-18 13:35:34