java - JLabel 超链接以在正确的 URL 处打开浏览器

标签 java swing browser hyperlink jlabel

我需要用 Java Swing 创建一个标签,它是可点击的,并且能够打开桌面上的默认浏览器并将其重定向到特定的 url。我的代码能够打开浏览器,但不能将其重定向到正确的 url(已加载默认主页)。我的测试代码:

 import java.awt.*;
 import javax.swing.*;
 import java.awt.event.*;
 import java.io.IOException;
 import java.net.*;

 public class LinkTest extends JFrame {

 public LinkTest() {
 JPanel p = new JPanel();

 JLabel link = new JLabel("Click here");
 link.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
 link.addMouseListener(new MouseAdapter() {
   public void mouseClicked(MouseEvent e) {
      if (e.getClickCount() > 0) {
          if (Desktop.isDesktopSupported()) {
                Desktop desktop = Desktop.getDesktop();
                try {
                    URI uri = new URI("http://www.bbc.co.uk");
                    desktop.browse(uri);
                } catch (IOException ex) {
                    ex.printStackTrace();
                } catch (URISyntaxException ex) {
                    ex.printStackTrace();
                }
        }
      }
   }
});
p.add(link);
getContentPane().add(BorderLayout.NORTH, p);
 }

 public static void main(String[] args) {
  LinkTest linkTest = new LinkTest();
  linkTest.setSize(640,100);
  linkTest.show();
 }
}

如何使用 Java Swing 打开默认浏览器并重定向到正确的 URL?

最佳答案

很简单,只需使用正确的参数将此方法复制到您的代码中即可。不要忘记添加所需的导入。

import java.awt.Cursor;
import java.awt.Desktop;
import java.awt.EventQueue;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;


    private void goWebsite(JLabel website, final String url, String text) {
        website.setText("<html> Website : <a href=\"\">"+text+"</a></html>");
        website.setCursor(new Cursor(Cursor.HAND_CURSOR));
        website.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                    try {
                            Desktop.getDesktop().browse(new URI(url));
                    } catch (URISyntaxException | IOException ex) {
                            //It looks like there's a problem
                    }
            }
        });
    }

关于java - JLabel 超链接以在正确的 URL 处打开浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8669350/

相关文章:

Java Streams - forEach with pre-Action 和 post-Action

java - 如何更改消息框中字符串的颜色?

java - 使用浏览器启动小程序时出现问题

java - 为什么我的二维数组克隆不止一次?

java - Apple 芯片上使用 jdk 17.0.1 的 java 应用程序运行时崩溃

Java 我该如何解析这个?

java - jPanel 调整大小后 jScrollPane 滚动消失

java - java中两个组合框同步

browser - 为什么我不能为不同的浏览器分组浏览器特定的 CSS 选择器?

Java套接字编程,为什么浏览器多次建立连接?