Java 使用链接更改JLABEL的颜色

Java 使用链接更改JLABEL的颜色,java,swing,colors,hyperlink,jlabel,Java,Swing,Colors,Hyperlink,Jlabel,如何使用java中的链接更改JLABEL的颜色 import java.awt.*; import javax.swing.*; import java.awt.event.*; public class XXX extends JFrame { XXX(){ final JLabel lab1=new JLabel("Username:"); final JTextField text1=new JTextField(20);

如何使用java中的链接更改JLABEL的颜色

    import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class XXX extends JFrame {
    XXX(){

        final JLabel lab1=new JLabel("Username:");
        final JTextField text1=new JTextField(20);
           lab1.setBounds(20,140,65,20);
           text1.setBounds(85,141,185,20);
           add(lab1);
           add(text1);
           lab1.setForeground(Color.white);

        final JLabel lab2=new JLabel("Password:");
        final JPasswordField text2=new JPasswordField(20);
           lab2.setBounds(20,165,65,20);
           text2.setBounds(85,166,185,20);
           add(lab2);
           add(text2);
           lab2.setForeground(Color.white);

        final JButton a=new JButton("Sign In");
        a.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
            //Code

            }
        });
        a.addMouseListener(new MouseAdapter() {
        public void mouseEntered(MouseEvent me) {
           a.setCursor(new Cursor(Cursor.HAND_CURSOR));
        }
        public void mouseExited(MouseEvent me) {
           a.setCursor(Cursor.getDefaultCursor());
        }
        public void mouseClicked(MouseEvent me)
        {
            a.setEnabled(false);
            text1.setEditable(false);
            text2.setEditable(false);
          try {

            }
            catch(Exception e) {
               System.out.println(e);
            }
        }
        });
           a.setBounds(85,192,80,20);
           add(a);

        final String strURL = "http://www.yahoo.com";
        final JLabel lab3 = new JLabel("<html><a href=\" " + strURL + "\">Register</a></html>");
        lab3.setBounds(170,192,52,20);
        add(lab3);
        lab3.addMouseListener(new MouseAdapter() {
        public void mouseEntered(MouseEvent me) {
           lab3.setCursor(new Cursor(Cursor.HAND_CURSOR));
        }
        public void mouseExited(MouseEvent me) {
           lab3.setCursor(Cursor.getDefaultCursor());
        }
        public void mouseClicked(MouseEvent me)
        {
           text2.setEditable(false);
          try {

            }
            catch(Exception e) {
               System.out.println(e);
            }
        }
        });


        final JLabel map = new JLabel(new ImageIcon(getClass().getResource("XXXBG.png")));
        map.setBounds(0,0,300,250);
        add(map);





            setTitle("XXX");
            setSize(300,250);
            setResizable(false);
            setCursor(DEFAULT_CURSOR);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setLocation(8, 8);
            setLayout(null);
            toFront();
            setVisible(true);
    }

    public static void main(String[] args)
    {
    new XXX();
        }
}
import java.awt.*;
导入javax.swing.*;
导入java.awt.event.*;
公共类XXX扩展了JFrame{
XXX(){
最终JLabel lab1=新JLabel(“用户名:”);
最终JTextField text1=新的JTextField(20);
lab1.立根(20140,65,20);
文本1.立根(85141185,20);
添加(lab1);
添加(文本1);
lab1.设置前景(颜色:白色);
最终JLabel lab2=新JLabel(“密码:”);
最终JPasswordField text2=新的JPasswordField(20);
lab2.立根(20165,65,20);
文本2.立根(85166185,20);
添加(lab2);
添加(文本2);
lab2.设置前景(颜色:白色);
最终JButton a=新JButton(“登录”);
a、 addActionListener(新ActionListener(){
已执行的公共无效操作(操作事件e){
//代码
}
});
a、 addMouseListener(新的MouseAdapter(){
公共无效mouseenterned(MouseEvent me){
a、 setCursor(新光标(Cursor.HAND_光标));
}
public void mouseexitted(MouseEvent me){
a、 setCursor(Cursor.getDefaultCursor());
}
公共无效mouseClicked(MouseEvent me)
{
a、 setEnabled(假);
text1.setEditable(false);
text2.setEditable(false);
试一试{
}
捕获(例外e){
系统输出打印ln(e);
}
}
});
a、 挫折(85192,80,20);
添加(a);
最终字符串strURL=”http://www.yahoo.com";
最终JLabel lab3=新JLabel(“”);
lab3.立根(170192,52,20);
添加(lab3);
lab3.addMouseListener(新的MouseAdapter(){
公共无效mouseenterned(MouseEvent me){
lab3.setCursor(新光标(Cursor.HAND_光标));
}
public void mouseexitted(MouseEvent me){
lab3.setCursor(Cursor.getDefaultCursor());
}
公共无效mouseClicked(MouseEvent me)
{
text2.setEditable(false);
试一试{
}
捕获(例外e){
系统输出打印ln(e);
}
}
});
最终的JLabel映射=新的JLabel(新的图像图标(getClass().getResource(“XXXBG.png”));
地图.立根(0,0300250);;
添加(地图);
片名(“XXX”);
设置大小(300250);
可设置大小(假);
设置光标(默认光标);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
设定位置(8,8);
setLayout(空);
toFront();
setVisible(真);
}
公共静态void main(字符串[]args)
{
新XXX();
}
}
如您所见,我无法更改JLABEL lab3的前景色。 如果可能的话,我还想改变边框的颜色,就像jframe一样。
有人能帮忙吗?

是的,有可能。简单地提供您想要使用的
前景
颜色

lab3.setForeground(Color.BLUE);
您也不需要鼠标侦听器。只需使用
lab3.setCursor(新的Cursor(Cursor.HAND_Cursor))将自动更改鼠标光标…神奇的是:D

已更新

public class TestLabel01 {

    public static void main(String[] args) {
        new TestLabel01();
    }

    public TestLabel01() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                }

                JLabel link = new JLabel("Linked in");
                link.setForeground(Color.BLUE);
                link.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));


                JFrame frame = new JFrame("Testing");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLayout(new BorderLayout());
                frame.add(link);
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

}

是的,有可能。简单地提供您想要使用的
前景
颜色

lab3.setForeground(Color.BLUE);
您也不需要鼠标侦听器。只需使用
lab3.setCursor(新的Cursor(Cursor.HAND_Cursor))将自动更改鼠标光标…神奇的是:D

已更新

public class TestLabel01 {

    public static void main(String[] args) {
        new TestLabel01();
    }

    public TestLabel01() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                }

                JLabel link = new JLabel("Linked in");
                link.setForeground(Color.BLUE);
                link.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));


                JFrame frame = new JFrame("Testing");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLayout(new BorderLayout());
                frame.add(link);
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

}


啊,摆脱那些
setBounds(…)
调用,使用布局管理器。针对您的问题:如果您希望能够设置JLabel的背景色,则需要通过调用JLabel上的
setOpaque(true)
将其不透明属性设置为
true
。如果这不是你想做的,那么请澄清问题。再次摆脱那些
setBounds(…)
调用。。“但我会尝试使用布局管理器。你很聪明,@MadProgrammer。”。是的,嗯。嘿,还有一件事,我加上setOpaque(真的)。。但改变颜色的只是背景。我想更改JLABEL的字体颜色。我正在使用JCreator。我看不到变化。。在lab3中,仍然使用蓝色和下划线。。没有鼠标事件的代码。它不会自动改变光标。啊,摆脱那些
setBounds(…)
调用,使用布局管理器。针对您的问题:如果您希望能够设置JLabel的背景色,则需要通过调用JLabel上的
setOpaque(true)
将其不透明属性设置为
true
。如果这不是你想做的,那么请澄清问题。再次摆脱那些
setBounds(…)
调用。。“但我会尝试使用布局管理器。你很聪明,@MadProgrammer。”。是的,嗯。嘿,还有一件事,我加上setOpaque(真的)。。但改变颜色的只是背景。我想更改JLABEL的字体颜色。我正在使用JCreator。我看不到变化。。在lab3中,仍然使用蓝色和下划线。。没有鼠标事件的代码..它不会自动更改光标。我想我缺少一行jlabel的代码。。因为它没有改变(光标的东西)。还有jlabel颜色。。它总是蓝色的。。我想把它换成颜色white@DieejayPeke:然后把它改成白色——没有人阻止你这么做。@dieejaype如果你有1600万种颜色可供选择,那就让你自己淘汰吧。此外,更新了一个简单的例子,显示了颜色和鼠标。。我唯一需要做的就是。。在html行中添加字体颜色..我想我缺少一行jlabel代码。。因为它没有改变(光标的东西)。还有jlabel颜色。。它总是蓝色的。