如何在MouseEnter上为JLabel加下划线

use*_*700 3 html java fonts swing jlabel

我试图改变字体,使用:

jLabel.setFont(new Font("Tahoma",1,20));
Run Code Online (Sandbox Code Playgroud)

但这里只有4种款式,Plain,Bold,Italic,Bold + Italic.

我希望它像HTML中的链接一样工作,当我将鼠标光标悬停在它上面时,JLabel会加下划线.

kle*_*tra 6

澄清(或不是:-)我对mKorbel的评论中引入的混淆

永远不要创建一个蓝色字体:它很可能会与应用程序中的所有其他字体冲突.相反,抓取默认值(从组件实例中,如下面所示的片段或UIManager,无关紧要)并派生.

为了获得使用属性(从mKorbel的答案中无耻地加工),就像这样

JLabel label = new JLabel("some text - WE ARE UNDERLINED");
MouseListener l = new MouseAdapter() {
    Font original;

    @Override
    public void mouseEntered(MouseEvent e) {
        original = e.getComponent().getFont();
        Map attributes = original.getAttributes();
        attributes.put(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON);
        e.getComponent().setFont(original.deriveFont(attributes));
    }

    @Override
    public void mouseExited(MouseEvent e) {
        e.getComponent().setFont(original);
    }


};
label.addMouseListener(l);
JComponent content = new JPanel();
content.add(label);
content.add(new JButton("dummy focus"));
Run Code Online (Sandbox Code Playgroud)

但要注意:这还不会给你任何超链接功能!所以,如果一个超链接就是你真的后,可以考虑使用一个完整的部件有这样的功能,如网络在SwingX项目JXHyperlink.您可能希望运行其项目主页上引用的演示.