日期:2014-05-19  浏览次数:20687 次

菜鸟来了--->如何将收到的数据显示在窗口内。
Java code
//窗口模块
 public class Xianshiping{
        public static void main (String args[])    {
        ImageFrame frame = new ImageFrame();    
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
//socket模块
        try {
        //创建一个DatagramSocket对象,并指定监听的端口号
        DatagramSocket socket = new DatagramSocket(8090);
        byte data [] = new byte[1024];
        //创建一个空的DatagramPacket对象
        DatagramPacket packet = new DatagramPacket(data,data.length);
        //使用receive方法接收客户端所发送的数据
        socket.receive(packet);
        //取得packet包内的数据放入一个String对象fenshu中
        String fenshu = new String(packet.getData(),packet.getOffset(),packet.getLength());
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
        }
        }
 class ImageFrame extends JFrame{
//     显示文本
     public void paint(Graphics g) {
         super.paint(g);
         g.setFont(new Font("SansSerif",Font.PLAIN,500));
         g.drawString("95.5", 30, 550); 
         }


这个代码里面包括了一个窗口模块,一个socket模块,一个文字显示模块。 请问如何将socket模块中接收到的数据fenshu,用文字显示模块中的g.drawString方法来显示呢?

------解决方案--------------------
Java code
 public   class   Xianshiping{ 
                public   static   void   main   (String   args[])         { 
                ImageFrame   frame   =   new   ImageFrame();         
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
                frame.setVisible(true); 
//socket模块 
                try   { 
                //创建一个DatagramSocket对象,并指定监听的端口号 
                DatagramSocket   socket   =   new   DatagramSocket(8090); 
                byte   data   []   =   new   byte[1024]; 
                //创建一个空的DatagramPacket对象 
                DatagramPacket   packet   =   new   DatagramPacket(data,data.length); 
                //使用receive方法接收客户端所发送的数据 
                socket.receive(packet); 
                //取得packet包内的数据放入一个String对象fenshu中 
                String   fenshu   =   new   String(packet.getData(),packet.getOffset(),packet.getLength()); 
                ImageFrame   IF=new   ImageFrame(fenshu); 
                IF.paint(); 
        }   catch   (Exception   e)   { 
                //   TODO   Auto-generated   catch   block 
                e.printStackTrace(); 
        } 
                } 
                } 

class   ImageFrame   extends   JFrame{ 
//           显示文本 
          String   str   =   null; 
        ImageFrame(String   str) 
        { 
                super(); 
                this.str=str; 
        } 
          public   void   paint(Graphics   g)   { 
                  super.paint(g); 
                  g.setFont(new   Font( "SansSerif ",Font.PLAIN,500)); 
                  g.drawString(str,   30,   550);   
                  } 
}