2013-03-20 105 views
0

如何使用java中的链接更改JLABEL的颜色?使用链接更改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(); 
     } 
} 

正如你所看到的,我不能改变JLABEL lab3的前景色。如果可能,我也想改变jframe边框的颜色。 任何人都可以帮忙?

+1

唉,摆脱那些'中的setBounds(... )调用并使用布局管理器。向你提出问题:如果你想能够为JLabel设置背景颜色,你需要通过在JLabel上调用'setOpaque(true)'来将它的opaque属性设置为'true'。如果这不是你想要做的,那么请澄清问题。再次摆脱那些'setBounds(...)'调用。 – 2013-03-20 02:55:26

+0

我是JAVA的初级用户,但我会尝试使用布局管理器。 – 2013-03-20 02:59:25

+0

“没有尝试”;) – MadProgrammer 2013-03-20 02:59:58

回答

3

是的,这是可能的。简单的供应要使用​​颜色...

lab3.setForeground(Color.BLUE); 

你也不需要鼠标监听。只需用lab3.setCursor(new 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); 
      } 
     }); 
    } 

} 
+0

我想我有一个缺少的代码行jlabel ..因为它不会改变(光标的东西)。 – 2013-03-20 03:05:46

+0

也是jlabel颜色..它总是颜色蓝色..我想将其更改为白色 – 2013-03-20 03:06:08

+0

@DieejayPeke:然后将其更改为白色 - 没有人阻止你这样做。 – 2013-03-20 03:13:51