日期:2014-05-20  浏览次数:20692 次

.....如何更新界面的JLabel的颜色?......
各位前辈,请教一个问题:想在另外一个线程中,定期检测某ip是否在线,如果在线,就在界面上使某个组件显红色,如果不在线,就显灰色。该怎么写?


import   java.net.*;
import   java.io.IOException;
import   javax.swing.*;
import   java.awt.Color;


public   class   IP
{
    JFrame   f=new   JFrame( "测试界面组件在另一个线程中的更新 ")   ;
    public   static   void   main(String[]   args)
    {
        IP   ip=new   IP();
        ip.init()   ;
       
        TestIp   tt=new   TestIp()   ;
        tt.start()   ;
    }

    public   void   init()  
    {
       
        f.setSize(350,250);
        f.setVisible(true);  
        jLabelip.setForeground(Color.lightGray);
        jLabelip.setHorizontalAlignment(SwingConstants.CENTER);
        jLabelip.setText( "192.168.0.1 ");
        f.getContentPane().add(jLabelip);
        f.setVisible(true);
    }
    JLabel   jLabelip   =   new   JLabel();
   
}
class   TestIp   extends   Thread   //implements   Readable
{
    public   void   run()
    {
        byte[]   clint1   =
                {
                  (byte)   192,   (byte)   168,   (byte)   0,   (byte)   1};
        InetAddress   addr   =   null;
        while   (true)
        {
            try   {
                Thread.sleep(5000);
            }
            catch   (InterruptedException   ex2)   {
            }
            try
            {
                addr   =   InetAddress.getByAddress(clint1);
            }
            catch   (UnknownHostException   ex)
            {
            }
            try
            {
                if   (addr.isReachable(5000))
                {
                    //如果192.168.0.1在线,更新jLabelip为红色
                }
                else
                {
                    //如果192.168.0.1不在线,则使jLabelip成为灰色
                }
            }