首页 > 解决方案 > Java Swing中带有JLabel的超链接

问题描述

我的代码有一点问题,这意味着超链接没有显示在 JLabel 下。我试图通过在不同的类中创建 JLabel 并在主类中运行该方法来解决该问题,但是当我这样做时,它只返回白色方块而不是标签。编译时没有错误。

Main班级:

import javax.swing.*;
import javax.swing.JFrame;
import javax.swing.BorderFactory;
import javax.swing.border.Border;
import java.awt.*;
import java.awt.Desktop;
import java.awt.event.ActionListener;
import java.net.URI;

public class Main extends JFrame
{
    static JLabel appicationStatute;

    public Main() throws Exception
    {
       super();
       registerWindowFrame = new JFrame("name");                                                                      
       registerWindowFrame.setSize(500,750);
       registerWindowFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);                                           
       registerWindowFrame.setLayout(null);
       registerWindowFrame.getContentPane().setBackground(Color.RED);

       Statute status = new Statute();
       status.setSize(status.getPreferredSize());
       status.setLocation(10,450);
       registerWindowFrame.getContentPane().add(status);
       registerWindowFrame.setVisible(true);                                                                         
    }

    public static void main (String [] args) throws Exception
    {
        new Main();                                                                         
    }
}

Statue班级

import java.awt.Color;
import java.awt.Cursor;
import java.awt.Desktop;
import java.awt.FlowLayout;
import java.awt.HeadlessException;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;

import javax.swing.*;

public class Statute extends JPanel {
    private String text = "application statute";
    private JLabel hyperlink = new JLabel(text);

    public Statute() throws HeadlessException {
        super();
        hyperlink.setForeground(Color.BLUE.darker());
        hyperlink.setCursor(new Cursor(Cursor.HAND_CURSOR));
        hyperlink.addMouseListener(new MouseAdapter() {

            @Override
            public void mouseClicked(MouseEvent e) {
                try {
                    Desktop.getDesktop().browse(new URI("http://www.codejava.net"));
                } catch (IOException | URISyntaxException e1) {
                    e1.printStackTrace();
                }
            }

            @Override
            public void mouseExited(MouseEvent e) {
                hyperlink.setText(text);
            }

            @Override
            public void mouseEntered(MouseEvent e) {
                hyperlink.setText("<html><a href=''>" + text + "</a></html>");
            }

        });
    }
}

标签: java

解决方案


推荐阅读