项目一:udp1111

监听的有三个文件分别为:

udp服务器监听(多线程)

guiHello.java 有关界面和事件响应功能

UdpFunc.java是udp类的封装:发送和接收

udpServer.java是入口函数,无实际意义

代码:

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.Scanner;

import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.border.LineBorder;
////

import java.net.DatagramSocket;
import java.net.DatagramPacket;
import java.net.InetAddress;


public class guiHello extends JFrame implements ActionListener {
    
     private static  UdpFunc func; //全局变量:调用udp类的实例化
     private static boolean status;       //侦听状态改变标志位
     private static JLabel label = new JLabel("192.168.0.3:5050");
     private static JTextArea ta=new JTextArea(30,80);
     private JFileChooser jfc=new JFileChooser(new File("."));
     private JButton bOpen,bSave;
     private JButton bListen,bOk,bStop;
     public guiHello()
     {
         super("UDP监听GUI");
         JScrollPane ps=new JScrollPane(ta);
         bOpen=new JButton("选取源文件");
         bSave=new JButton("保存变量"); 
         bListen = new JButton("开始监听");   //这个是自定义的按钮
         bOk     = new JButton("测试按钮"); 
        
        //自定义两个 JPanel       
         JPanel panel1 = new JPanel(new BorderLayout());
         JPanel panel2 = new JPanel(new BorderLayout());
         
         //两个panel第二个背景为红色
         panel2.setBackground(Color.red);
         //panel1.add(bStop, BorderLayout.WEST);
         panel1.add(bListen, BorderLayout.CENTER);
         
         add(panel1);
         panel2.add(label, BorderLayout.EAST);
         add(panel2);
         
         setLayout(new FlowLayout(FlowLayout.CENTER,10,15));
         
         add(ps);
         add(bOpen);
         add(bSave);
        // add(bListen);
         add(bOk);
         Border b = new LineBorder(Color.ORANGE, 2);
         bListen.setBorder(b);
         bOpen.addActionListener(this);
         bSave.addActionListener(this);
         bListen.addActionListener(this);
         bOk.addActionListener(this);
         
         setVisible(true);
         setSize(1600,1500);
         
     }
   /* public static void main(String[] args) {
        // TODO Auto-generated method stub
        guiHello frm=new guiHello();
        frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
}
    */
    public void actionPerformed(ActionEvent e)
    {
        JButton jbt=(JButton)e.getSource();
        if(jbt==bOpen)
        {
            int status=jfc.showOpenDialog(this);
            if(status!=JFileChooser.APPROVE_OPTION)
                ta.setText("没有选择文件");
            else {
                try{
                    File file1=jfc.getSelectedFile();
                    Scanner scan=new Scanner(file1);
                    String info="";
                    while(scan.hasNext())
                    {
                        String str=scan.nextLine();
                        info+=str+"\r\n";
                    }
                    scan.close();
                    ta.setText(info);
                }
                catch(FileNotFoundException ex){
            
                }
                }
            
            
       }else if(jbt==bSave){
           Save();
          
       }else if(jbt==bListen){
           ta.setText("开始监听...");
           status =true;    //开始监听时为truejbt==bStop
           func = new UdpFunc(5050);
            new Thread(new Logic()).start();
           
       }else if(e.getActionCommand().equals("测试按钮")){
           
              ta.setText("按钮bOk");
             
           
       }else{
           ta.setText("未注册变量");
       }
    }
    
    //每个按钮对应的函数
    private static void Save(){
         ta.setText("保存的按钮");
         
    }
    
  
    
  /*
    * 逻辑类,主要负责接收报文并显示出来
    * 
    * @author ghost
    * 
    */
  private static class Logic implements Runnable {

       public void run() {
           //由于类为static,所以监听标志位也为静态变量,根据true flase决定监听线程是否一直开启
           while (true) {
               String message = func.read();
               //System.out.println(message);
               ta.setText(message);
              
           }
          
       }

   }

}
guiHello.java

相关文章:

  • 2021-06-09
  • 2022-12-23
  • 2022-12-23
  • 2021-05-25
  • 2021-08-29
  • 2021-12-07
  • 2022-01-22
猜你喜欢
  • 2022-12-23
  • 2021-07-08
  • 2021-08-28
  • 2021-04-19
  • 2021-06-25
  • 2021-12-19
相关资源
相似解决方案