- 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); } }