2013-03-20 108 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