首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

.怎么更新界面的JLabel的颜色?

2012-02-19 
.....如何更新界面的JLabel的颜色?......各位前辈,请教一个问题:想在另外一个线程中,定期检测某ip是否在线

.....如何更新界面的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成为灰色
                }
            }


            catch   (IOException   ex1)
            {
            }
        }
    }
}

[解决办法]
setForeground(Color)
setBackground(Color)

试下上面两个

另外Swing的组件支持使用html

private static final String online = " <html> <font color=\ "fuchsia\ "> 用户在线 </font> </html> ";
private static final String offline = " <html> <font color=\ "gray\ "> 用户离线 </font> </html> "


JLabel label = new JLabel();

在线 label.setText(online);
离线 label.setText(offline);
[解决办法]
请将线程类写为主类的内部类~或者在写一个线程类的构造函数,接收一个主类的对象!否则没法改变label的颜色!!
[解决办法]
listener
[解决办法]
mark

热点排行