【技能实训】DMS数据挖掘项目-Day12

news2025/3/11 0:25:47

文章目录

  • 任务14
    • 【任务14.1】类ClientFrame
    • 【任务14.1.1】在构造函数中定义组件属性
    • 【任务14.1.2】补充initConfig()方法的代码,获取客户端配置信息
    • 【任务14.1.4】菜单界面的初始化方法
    • 【任务14.2】在14.1的基础上,实现日志数据与物流数据的采集功能

任务14

【任务14.1】类ClientFrame

实现主窗口中的菜单和工具栏,修改主窗口,在主窗口中声明所有组件,并初始化菜单和工具栏
DMS-1
DMS-2
DMS-3

【任务14.1.1】在构造函数中定义组件属性

//菜单
private JMenuBar menuBar;//包含多个菜单
private JMenu oper,help, matchMenu;
private JMenuItem mGather, mSave,mSend,mShow,mCheck,mHelp, mLog,mTransport, mExit;

//工具栏mShow,showBtn
private JToolBar toolBar;
private JButton gatherBtn,logBtn,transportBtn,saveBtn,sendBtn,showBtn;

//数据采集和显示卡片布局组件
private JPanel p;//数据采集和显示的界面面板,里面采用CardLayout布局,分别显示采集界面和显示界面
private JTabbedPane jGather,jShow;
private CardLayout card;

//日志数据采集组件
private JTextField txtLogId,txtName,txtLocation,txtIP;
private JRadioButton rbLogin,rbLogout;
private JButton btnLogConfirm,btnLogReset;

//物流数据采集组件
private JTextField txtTransId,txtAdress,txtHandler,txtReceiver;
private JComboBox<String> cmbTanStatus;
private JButton btnTranConfirm,btnTranReset;
 
private JTable logTable;//日志原始数据显示Table
private JTable transTable;//物流原始数据显示Table

//日志数据存储集合
private List<LogRec> logList = new ArrayList<>();
private List<Transport> transList = new ArrayList<>();
//物流数据存储集合
private List<MatchedLogRec> matchLogList = new ArrayList<>();
private List<MatchedTransport> matchTransList = new ArrayList<>();

//日志与物流业务对象
private LogRecService logRecService = new LogRecService();
private TransportService transService = new TransportService();

private String serverIp;//服务端IP
private int serverPort;//服务端端口

//客户端配置文件
private final static String CONFIG_FILE = "config/client.properties";  

【任务14.1.2】补充initConfig()方法的代码,获取客户端配置信息

private void initConfig() {
		try {
           //通过Properties类获取配置文件中的属性赋值给serverPort和serverIp
		    
		     
		} catch (Exception e) {
			e.printStackTrace();
			throw new RuntimeException(e);
		}
	}

##【任务14.1.3】构造方法的基本代码
	// 构造方法
	public ClientFrame() {
		// TODO Auto-generated constructor stub
		super("DMS客户端");//给窗口一个名称,显示左上角
		ImageIcon icon = new ImageIcon("images\\dms.png");
		this.setIconImage(icon.getImage());

		initConfig();//读取配置文件
		initMenu();//初始化菜单
		initToolBar();//初始化工具栏
		
//--------数据采集界面的设计----------
		//后面补充代码
//--------数据采集界面的设计结束----------

		 
		//数据采集的监听
		
		mGather.addActionListener(new miGatherListener());//数据采集菜单项增加监听
        gatherBtn.addActionListener(new miGatherListener());//工具栏上采集按钮监听
       
        
        //数据显示监听
        mShow.addActionListener(new miShowListener());
        showBtn.addActionListener(new miShowListener());
		
        
        //帮助菜单的监听设置
		// 注册监听
		mHelp.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				// 显示消息对话框
				JOptionPane.showMessageDialog(null, "本系统实现数据的采集、过滤分析匹配、保存、发送及显示功能", "帮助", JOptionPane.QUESTION_MESSAGE);
			}
		});
		// 注册监听
		mCheck.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				// 显示消息对话框
				JOptionPane.showMessageDialog(null, "版本:1.0版", "关于", JOptionPane.WARNING_MESSAGE);
			}
		});
        
		initGatherLogRecShowUI();//日志显示界面初始化
		initGatherTransportShowUI();//物流采集界面初始化
		
		// 设置窗体大小
		this.setSize(600, 400);
		// 设置窗口在屏幕中央
		this.setLocationRelativeTo(null);//居中
		// 设置默认的关闭按钮操作为退出程序
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		// 设置窗体初始可见
		this.setVisible(true);
	}

【任务14.1.4】菜单界面的初始化方法

    	// 初始化菜单的方法
	private void initMenu() {
		//-------系统菜单的初始化开始----------------
				menuBar = new JMenuBar();
				this.setJMenuBar(menuBar);//创建菜单条,并放入到JFrame
				
				oper = new JMenu("操作");
				help = new JMenu("帮助");
				menuBar.add(oper);
				menuBar.add(help);
				
				mGather = new JMenuItem("采集数据");
				
				//子菜单
				matchMenu = new JMenu("匹配数据");
				mLog = new JMenuItem("日志数据匹配");
				mLog.addActionListener(new MatchedLogRecListener());
				mTransport  = new JMenuItem("物流数据匹配");
				mTransport.addActionListener(new MatchedTransportListener());
				matchMenu.add(mLog);
				matchMenu.add(mTransport);
				
				mSave = new JMenuItem("保存数据");
				mSave.addActionListener(new SaveActionListener());
				
				mSend = new JMenuItem("发送数据");
				mSend.addActionListener(new SendActionListener());
				mShow = new JMenuItem("显示数据");
				
				mExit = new JMenuItem("退出应用");
				
				mExit.addActionListener(new ActionListener() {

					@Override
					public void actionPerformed(ActionEvent e) {
						// TODO Auto-generated method stub
						System.exit(0);
					}
					
				});
				
				oper.add(mGather);
				oper.add(matchMenu);
				oper.add(mSave);
				oper.add(mSend);
				oper.add(mShow);
				oper.add(mExit);
				
				mCheck = new JMenuItem("关于系统");
				mHelp = new JMenuItem("查看帮助");
				help.add(mCheck);
				help.add(mHelp);
				
				//-------系统菜单的初始化结束----------------
	}
【任务14.1.5】工具栏界面的初始化方法
	// 初始化工具栏的方法
	private void initToolBar() {
		//-------系统工具栏的初始化------------
				toolBar = new JToolBar();
				
				ImageIcon icon1 = new ImageIcon("images\\gatherData.png");
				gatherBtn = new JButton("采集数据",icon1);
				
				ImageIcon icon2 = new ImageIcon("images\\matchData.png");
				logBtn = new JButton("日志数据匹配",icon2);
				logBtn.addActionListener(new MatchedLogRecListener());//-----------------
				ImageIcon icon3 = new ImageIcon("images\\matchData.png");
				transportBtn = new JButton("物流数据匹配",icon3);
				transportBtn.addActionListener(new MatchedTransportListener());//------------
				ImageIcon icon4 = new ImageIcon("images\\saveData.png");
				saveBtn = new JButton("保存数据",icon4);
				saveBtn.addActionListener(new SaveActionListener());
				ImageIcon icon5 = new ImageIcon("images\\sendData.png");
				sendBtn = new JButton("发送数据",icon5);
				sendBtn.addActionListener(new SendActionListener());
				ImageIcon icon6 = new ImageIcon("images\\showData.png");
				showBtn = new JButton("显示数据",icon6);
				
				toolBar.add(gatherBtn);
				toolBar.add(logBtn);
				toolBar.add(transportBtn);
				toolBar.add(saveBtn);
				toolBar.add(sendBtn);
				toolBar.add(showBtn);
				
				//JFrame默认有个JPanel
				this.getContentPane().add(toolBar,BorderLayout.NORTH);

				//-------系统工具栏的初始化结束------------
	}


	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new ClientFrame();
	}

【任务14.2】在14.1的基础上,实现日志数据与物流数据的采集功能

DMS-4

  1. 构造方法里边添加

构造

  1. initMenu()里边添加(也可以直接添加到构造函数)
    // 注册监听
    initMenu()

  2. initToolBar()里边添加(也可以直接添加到构造函数)
    // 注册监听
    initToolBar()

  3. 新建方法

    // 初始化日志数据采集界面的方法
	private void initLogGatherGUI() {
		pLog = new JPanel();
		tpGather.addTab("日志", pLog);
		pLog.setLayout(new BoxLayout(pLog, BoxLayout.Y_AXIS));
		pLogId = new JPanel();
		pLog.add(pLogId);
		pLogId.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));

		lblLogId = new JLabel("日志ID:");
		pLogId.add(lblLogId);

		txtLogId = new JTextField();
		txtLogId.setPreferredSize(new Dimension(100, 20));
		pLogId.add(txtLogId);

		pName = new JPanel();
		pLog.add(pName);
		pName.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));

		lblName = new JLabel("用户名:");
		pName.add(lblName);

		txtName = new JTextField();
		txtName.setPreferredSize(new Dimension(100, 20));
		pName.add(txtName);

		pLocation = new JPanel();
		pLog.add(pLocation);

		lblLocation = new JLabel("登录地点:");
		pLocation.add(lblLocation);

		txtLocation = new JTextField();
		txtLocation.setPreferredSize(new Dimension(100, 20));
		pLocation.add(txtLocation);

		pIP = new JPanel();
		pLog.add(pIP);

		lblIP = new JLabel("登录IP:");
		pIP.add(lblIP);

		txtIP = new JTextField();
		txtIP.setPreferredSize(new Dimension(100, 20));
		pIP.add(txtIP);

		pLogStatus = new JPanel();
		pLog.add(pLogStatus);

		lblLogStatus = new JLabel("登录状态:");
		pLogStatus.add(lblLogStatus);

		rbLogin = new JRadioButton("登录");
		pLogStatus.add(rbLogin);
		rbLogin.setSelected(true);

		rbLogout = new JRadioButton("登出");
		pLogStatus.add(rbLogout);

		ButtonGroup bg = new ButtonGroup();
		bg.add(rbLogin);
		bg.add(rbLogout);

		pLogButton = new JPanel();
		pLog.add(pLogButton);

		btnLogConfirm = new JButton("确认");
		// 添加确认按钮监听
		btnLogConfirm.addActionListener(new GatherLogListener());
		pLogButton.add(btnLogConfirm);

		btnLogReset = new JButton("重置");
		// 添加重置按钮监听
		btnLogReset.addActionListener(new ResetListener());
		pLogButton.add(btnLogReset);
	}

	// 初始化物流数据采集界面的方法
	

init-1
init-2

  1. 创建监听内部类
    // 数据采集监听类 m1
    // 日志数据采集监听类
    m2
    // 物流数据采集监听类
    m3
	// 重置按钮监听类	
	private class ResetListener implements ActionListener {
		// 重置按钮的事件处理方法
		public void actionPerformed(ActionEvent e) {
			txtName.setText("");
			txtLocation.setText("");
			txtIP.setText("");
			txtAdress.setText("");
			txtHandler.setText("");
			txtReceiver.setText("");
		}
	}

程序设计

package com.qst.dms.ui;

import com.qst.dms.entity.*;
import com.qst.dms.service.LogRecService;
import com.qst.dms.service.TransportService;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Date;

public class ClientFrame extends JFrame {
    //菜单
    private JMenuBar menuBar;//包含多个菜单
    private JMenu oper, help, matchMenu;
    private JMenuItem mGather, mSave, mSend, mShow, mCheck, mHelp, mLog, mTransport, mExit;

    //工具栏mShow,showBtn
    private JToolBar toolBar;
    private JButton gatherBtn, logBtn, transportBtn, saveBtn, sendBtn, showBtn;

    //数据采集和显示卡片布局组件
    private JPanel p;//数据采集和显示的界面面板,里面采用CardLayout布局,分别显示采集界面和显示界面
    private JTabbedPane jGather, jShow;
    private CardLayout card;

    //日志数据采集组件
    private JTextField txtLogId, txtName, txtLocation, txtIP;
    private JRadioButton rbLogin, rbLogout;
    private JButton btnLogConfirm, btnLogReset;

    //物流数据采集组件
    private JTextField txtTransId, txtAdress, txtHandler, txtReceiver;
    private JComboBox<String> cmbTanStatus;
    private JButton btnTranConfirm, btnTranReset;

    private JTable logTable;//日志原始数据显示Table
    private JTable transTable;//物流原始数据显示Table

    //日志数据存储集合
    private ArrayList<LogRec> logList = new ArrayList<>();
    private ArrayList<Transport> transList = new ArrayList<>();
    //物流数据存储集合
    private ArrayList<MatchedLogRec> matchLogList = new ArrayList<>();
    private ArrayList<MatchedTransport> matchTransList = new ArrayList<>();

    //日志与物流业务对象
    private LogRecService logRecService = new LogRecService();
    private TransportService transService = new TransportService();

    private String serverIp;//服务端IP
    private int serverPort;//服务端端口

    //客户端配置文件
    private final static String CONFIG_FILE = "config/client.properties";

    private void initConfig() {
        try {
            //通过Properties类获取配置文件中的属性赋值给serverPort和serverIp


        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }

    // 构造方法
    public ClientFrame() {
        // TODO Auto-generated constructor stub
        super("DMS客户端");//给窗口一个名称,显示左上角
        ImageIcon icon = new ImageIcon("images\\dms.png");
        this.setIconImage(icon.getImage());

        initConfig();//读取配置文件
        initMenu();//初始化菜单
        initToolBar();//初始化工具栏


//--------数据采集界面的设计----------
        //后面补充代码
        card = new CardLayout();
        p = new JPanel(card);
        this.getContentPane().add(p, BorderLayout.CENTER);
        jGather = new JTabbedPane(JTabbedPane.TOP);
        p.add(jGather, "gather");
        jShow = new JTabbedPane(JTabbedPane.TOP);
        jShow.addTab("日志", new JScrollPane());
        jShow.addTab("物流", new JScrollPane());
        p.add(jShow, "show");

        initLogGatherGUI();
        initGatherTransport();


//--------数据采集界面的设计结束----------


        //数据采集的监听

        mGather.addActionListener(new miGatherListener());//数据采集菜单项增加监听
        gatherBtn.addActionListener(new miGatherListener());//工具栏上采集按钮监听


        //数据显示监听
        //mShow.addActionListener(new miShowListener());
        //showBtn.addActionListener(new miShowListener());


        //帮助菜单的监听设置

        // 注册监听
        mHelp.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                // 显示消息对话框
                JOptionPane.showMessageDialog(null, "本系统实现数据的采集、过滤分析匹配、保存、发送及显示功能", "帮助", JOptionPane.QUESTION_MESSAGE);
            }
        });
        // 注册监听
        mCheck.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                // 显示消息对话框
                JOptionPane.showMessageDialog(null, "版本:1.0版", "关于", JOptionPane.WARNING_MESSAGE);
            }
        });

        //initGatherLogRecShowUI();//日志显示界面初始化
        //initGatherTransportShowUI();//物流采集界面初始化

        // 设置窗体大小
        this.setSize(600, 400);
        // 设置窗口在屏幕中央
        this.setLocationRelativeTo(null);//居中
        // 设置默认的关闭按钮操作为退出程序
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // 设置窗体初始可见
        this.setVisible(true);
    }

    // 初始化菜单的方法
    private void initMenu() {

        //菜单项 注册监听
        //miMatchLog.addActionListener(new MatchLogListener());

        // 菜单项 注册监听
        //miMatchTrans.addActionListener(new MatchTransListener());


        //-------系统菜单的初始化开始----------------
        menuBar = new JMenuBar();
        this.setJMenuBar(menuBar);//创建菜单条,并放入到JFrame

        oper = new JMenu("操作");
        help = new JMenu("帮助");
        menuBar.add(oper);
        menuBar.add(help);

        mGather = new JMenuItem("采集数据");

        mGather.addActionListener(new miGatherListener());

        //子菜单
        matchMenu = new JMenu("匹配数据");
        mLog = new JMenuItem("日志数据匹配");
        mLog.addActionListener(new MatchedLogRecListener());
        mTransport = new JMenuItem("物流数据匹配");
        mTransport.addActionListener(new MatchedTransportListener());
        matchMenu.add(mLog);
        matchMenu.add(mTransport);

        mSave = new JMenuItem("保存数据");
        mSave.addActionListener(new SaveActionListener());

        mSend = new JMenuItem("发送数据");
        mSend.addActionListener(new SendActionListener());
        mShow = new JMenuItem("显示数据");

        mExit = new JMenuItem("退出应用");

        mExit.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // TODO Auto-generated method stub
                System.exit(0);
            }

        });

        oper.add(mGather);
        oper.add(matchMenu);
        oper.add(mSave);
        oper.add(mSend);
        oper.add(mShow);
        oper.add(mExit);

        mCheck = new JMenuItem("关于系统");
        mHelp = new JMenuItem("查看帮助");
        help.add(mCheck);
        help.add(mHelp);

        //-------系统菜单的初始化结束----------------
    }

    // 初始化工具栏的方法
    private void initToolBar() {

        //-------系统工具栏的初始化------------
        toolBar = new JToolBar();

        ImageIcon icon1 = new ImageIcon("images\\gatherData.png");
        gatherBtn = new JButton("采集数据", icon1);

        gatherBtn.addActionListener(new miGatherListener());

        ImageIcon icon2 = new ImageIcon("images\\matchData.png");
        logBtn = new JButton("日志数据匹配", icon2);
        logBtn.addActionListener(new MatchedLogRecListener());//-----------------
        ImageIcon icon3 = new ImageIcon("images\\matchData.png");
        transportBtn = new JButton("物流数据匹配", icon3);
        transportBtn.addActionListener(new MatchedTransportListener());//------------
        ImageIcon icon4 = new ImageIcon("images\\saveData.png");
        saveBtn = new JButton("保存数据", icon4);
        saveBtn.addActionListener(new SaveActionListener());
        ImageIcon icon5 = new ImageIcon("images\\sendData.png");
        sendBtn = new JButton("发送数据", icon5);
        sendBtn.addActionListener(new SendActionListener());
        ImageIcon icon6 = new ImageIcon("images\\showData.png");
        showBtn = new JButton("显示数据", icon6);

        toolBar.add(gatherBtn);
        toolBar.add(logBtn);
        toolBar.add(transportBtn);
        toolBar.add(saveBtn);
        toolBar.add(sendBtn);
        toolBar.add(showBtn);

        //JFrame默认有个JPanel
        this.getContentPane().add(toolBar, BorderLayout.NORTH);

        //-------系统工具栏的初始化结束------------
    }

    // 初始化日志数据采集界面的方法
    private void initLogGatherGUI() {
        JPanel pLog = new JPanel();
        jGather.addTab("日志", pLog);

        pLog.setLayout(new BoxLayout(pLog, BoxLayout.Y_AXIS));
        JPanel pLogId = new JPanel();
        pLog.add(pLogId);
        pLogId.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));

        JLabel lblLogId = new JLabel("日志ID:");
        pLogId.add(lblLogId);

        txtLogId = new JTextField();
        txtLogId.setPreferredSize(new Dimension(100, 20));
        pLogId.add(txtLogId);

        JPanel pName = new JPanel();
        pLog.add(pName);
        pName.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));

        JLabel lblName = new JLabel("用户名:");
        pName.add(lblName);

        txtName = new JTextField();
        txtName.setPreferredSize(new Dimension(100, 20));
        pName.add(txtName);

        JPanel pLocation = new JPanel();
        pLog.add(pLocation);

        JLabel lblLocation = new JLabel("登录地点:");
        pLocation.add(lblLocation);

        txtLocation = new JTextField();
        txtLocation.setPreferredSize(new Dimension(100, 20));
        pLocation.add(txtLocation);

        JPanel pIP = new JPanel();
        pLog.add(pIP);

        JLabel lblIP = new JLabel("登录IP:");
        pIP.add(lblIP);

        txtIP = new JTextField();
        txtIP.setPreferredSize(new Dimension(100, 20));
        pIP.add(txtIP);

        JPanel pLogStatus = new JPanel();
        pLog.add(pLogStatus);

        JLabel lblLogStatus = new JLabel("登录状态:");
        pLogStatus.add(lblLogStatus);

        rbLogin = new JRadioButton("登录");
        pLogStatus.add(rbLogin);
        rbLogin.setSelected(true);

        rbLogout = new JRadioButton("登出");
        pLogStatus.add(rbLogout);

        ButtonGroup bg = new ButtonGroup();
        bg.add(rbLogin);
        bg.add(rbLogout);

        JPanel pLogButton = new JPanel();
        pLog.add(pLogButton);

        btnLogConfirm = new JButton("确认");
        // 添加确认按钮监听
        btnLogConfirm.addActionListener(new GatherLogListener());
        pLogButton.add(btnLogConfirm);

        btnLogReset = new JButton("重置");
        // 添加重置按钮监听
        btnLogReset.addActionListener(new ResetListener());
        pLogButton.add(btnLogReset);
    }

    // 初始化物流数据采集界面的方法
    private void initGatherTransport() {
        //-----物流数据采集详情界面------
        JPanel pTran = new JPanel();
        jGather.addTab("物流", new JScrollPane(pTran));
        pTran.setLayout(new BoxLayout(pTran, BoxLayout.Y_AXIS));

        JPanel pTransId = new JPanel();
        pTran.add(pTransId);

        JLabel lblTransId = new JLabel("物流ID: ");
        pTransId.add(lblTransId);

        txtTransId = new JTextField();
        txtTransId.setPreferredSize(new Dimension(100, 20));
        pTransId.add(txtTransId);

        JPanel pAdress = new JPanel();
        pTran.add(pAdress);

        JLabel lblAdress = new JLabel("目的地:");
        pAdress.add(lblAdress);

        txtAdress = new JTextField();
        txtAdress.setPreferredSize(new Dimension(100, 20));
        pAdress.add(txtAdress);

        JPanel pHandler = new JPanel();
        pTran.add(pHandler);

        JLabel lblHandler = new JLabel("经手人");
        pHandler.add(lblHandler);

        txtHandler = new JTextField();
        txtHandler.setPreferredSize(new Dimension(100, 20));
        pHandler.add(txtHandler);

        JPanel pReceiver = new JPanel();
        pTran.add(pReceiver);

        JLabel lblReceiver = new JLabel("收货人:");
        pReceiver.add(lblReceiver);

        txtReceiver =new JTextField();
        txtReceiver.setPreferredSize(new Dimension(100,20));
        pReceiver.add(txtReceiver);

        JPanel pTranStatus = new JPanel();
        pTran.add(pTranStatus);

        JLabel lblTranStatus =new JLabel("物流状态:");
        pTranStatus.add(lblTranStatus);

        String[] tranStatus = new String[] {"发货中","送货中", "已签收"};
        cmbTanStatus=new JComboBox<String>(tranStatus);
        pTranStatus.add(cmbTanStatus);
        JPanel pTranButton=new JPanel();
        pTran.add(pTranButton);

        btnTranConfirm=new JButton("确认");
        btnTranConfirm.addActionListener(new GatherTransListener());
        pTranButton.add(btnTranConfirm);

        btnTranReset=new JButton("重置");
        btnTranReset.addActionListener(new ResetListener());
        pTranButton.add(btnTranReset);
    }

    // 数据采集监听类
    private class miGatherListener implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e){
            card.show(p, "gather");
        }

    }


    // 匹配日志信息监听类
    private class MatchedLogRecListener implements ActionListener{

        @Override
        public void actionPerformed(ActionEvent e) {
            //参考前面字符控制界面,自己完成代码
            card.show(p,"logmatch");
        }
    }

    // 匹配物流信息监听类
    private class MatchedTransportListener implements ActionListener{

        @Override
        public void actionPerformed(ActionEvent e) {
            //参考前面字符控制界面,自己完成代码
            card.show(p,"tranmatch");
        }
    }

    private class SaveActionListener implements ActionListener{

        @Override
        public void actionPerformed(ActionEvent e) {
            //参考前面字符控制界面,自己完成代码
            card.show(p,"save");
        }
    }

    private class SendActionListener implements ActionListener{

        @Override
        public void actionPerformed(ActionEvent e) {
            //参考前面字符控制界面,自己完成代码
            card.show(p,"save");
        }
    }


    // 日志数据采集监听类
    private class GatherLogListener implements ActionListener {
        // 数据采集的事件处理方法
        public void actionPerformed(ActionEvent e) {
            // 获取日志ID
            int id = Integer. parseInt(txtLogId. getText(). trim());
            // 创建当前时间
            Date time = new Date();
            // 获取地址栏地址
            String adress = txtLocation. getText(). trim();
            // 设置数据类型为:采集
            int type = DataBase. GATHER;
            // 获取用户姓名
            String user = txtName. getText(). trim();
            // 获取ip地址
            String ip = txtIP. getText(). trim();
            // 设置日志类型
            int logType = rbLogin. isSelected() ? LogRec. LOG_IN: LogRec. LOG_OUT;
            // 将数据封装到日志对象
            LogRec log = new LogRec(id, time, adress, type, user, ip, logType);
            // 将日志对象添加到日志列表
            logList.add(log);

            //logTable.updateUI();//更新了JTable的数据来源List,更新JTable界面

            // 显示对话框
            JOptionPane.showMessageDialog(null, "日志采集成功!", "提示" , JOptionPane. INFORMATION_MESSAGE);
        }
    }


    // 物流数据采集监听类
    private class GatherTransListener implements ActionListener {
        // 数据采集的事件处理方法
        public void actionPerformed(ActionEvent e) {
            // 获取物流ID
            int id = Integer. parseInt(txtTransId. getText(). trim());
            // 创建当前时间
            Date time = new Date();
            // 获取地址栏地址
            String adress = txtAdress. getText(). trim();
            // 设置数据类型为: 采集
            int type = DataBase. GATHER;
            // 获取经手人信息
            String handler = txtHandler. getText(). trim();
            // 获取发送人信息
            String reciver = txtReceiver. getText(). trim();
            // 设置物流类型
            int transportType = cmbTanStatus. getSelectedIndex() +1;
            // 将数据包装成物流对象
            Transport trans = new Transport(id, time, adress, type, handler, reciver, transportType);
            // 将物流对象放入物流列表
            transList. add(trans);

            //transTable. updateUI();

            // 显示对话框
            JOptionPane. showMessageDialog(null, "物流采集成功!", "提示", JOptionPane.INFORMATION_MESSAGE);
        }
    }

    // 重置按钮监听类
    private class ResetListener implements ActionListener {
        // 重置按钮的事件处理方法
        public void actionPerformed(ActionEvent e) {
            txtName.setText("");
            txtLocation.setText("");
            txtIP.setText("");
            txtAdress.setText("");
            txtHandler.setText("");
            txtReceiver.setText("");
        }
    }


    public static void main(String[] args) {
        // TODO Auto-generated method stub
        new ClientFrame();
    }

}

测试

1
2
3

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/762070.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安全开发-PHP应用文件管理模块显示上传黑白名单类型过滤访问控制文件管理模块包含上传遍历写入删除下载安全

文章目录 文件管理模块-上传-过滤机制文件管理模块-显示-过滤机制PHP文件操作安全文件包含文件上传文件删除文件下载文件编辑 文件管理模块-上传-过滤机制 $_FILES&#xff1a;PHP中一个预定义的超全局变量&#xff0c;用于在上传文件时从客户端接收文件&#xff0c;并将其保存…

基于 OpenVINO 的目标识别

基于 OpenVINO 的目标识别 YOLOV5原理 YOLOv5是一种快速高效的目标检测算法&#xff0c;具有优秀的实时性能和较高的准确度。该算法利用深度学习技术实现了端到端的目标检测&#xff0c;在计算资源有限的情况下也能够获得出色的表现 YOLOv5采用了一种基于Anchor的检测方式&…

广西电网:筑牢数字化安全根基,推动新型能源体系建设

广西电网是南方电网的全资子公司&#xff0c;是广西地区内资产规模数一数二的特大型企业。一直以来&#xff0c;广西电网都积极探索深化数字化绿色化协同&#xff0c;深入推进数字电网建设&#xff0c;构建新型电力系统和新型能源体系。 国家政策提出要求 以安全保障数字纽带 …

postman常用操作说明

环境变量 环境变量就是我们存放一组公共数据的地方&#xff0c;比如我有100个接口&#xff0c;三套环境(开发环境、测试环境、生产环境)&#xff0c;我们没有必要把这100个接口根据三个环境分别写一套用例。只需要维护一套用例脚本&#xff0c;然后设置对应三个环境的变量就行…

抗性宏基因组揭秘人和动物共享ARG以及ARG的转移能力

抗生素耐药性&#xff08;Antibiotic Resistance&#xff09;是全球日益严重的公共卫生问题&#xff0c;随着“同一健康”概念的提出&#xff0c;人们更追求人、动物和环境的最佳健康。动物服用抗生素后会在其内脏中产生抗药细菌&#xff0c;并留在动物体内&#xff0c;最终可能…

MIT 6.829 -- Lecture 1: Packet Switching

MIT 6.829 -- Lecture 1: Packet Switching 引言InterconnectionsCircuit SwitchingPacket SwitchingDatagram routingSource routingVirtual circuits An example&#xff1a;LAN SwitchingLearning bridgesThe Solution&#xff1a;Spanning TreesVirtual LANs Summary 本课程…

PS图层混合模式超详细解答-图层混合模式的原理(Part1)

PS图层混合模式超详细解答-图层混合模式的原理 ☕ 前言 本教程非常详细&#xff0c;请用心看完 本教程如果有如何问题&#xff0c;欢迎评论区留言讨论 本教程为了避免冗余&#xff0c;一些不必要的截图就省略了 本教程只讨论8bit的情形下的混合 未经许可&#xff0c;不可转…

3.7 Bootstrap 导航栏

文章目录 Bootstrap 导航栏响应式的导航栏导航栏中的表单导航栏中的按钮导航栏中的文本结合图标的导航链接组件对齐方式固定到顶部固定到底部静态的顶部反色的导航栏 Bootstrap 导航栏 导航栏是一个很好的功能&#xff0c;是 Bootstrap 网站的一个突出特点。导航栏在您的应用或…

详解GPT技术发展脉络

文章目录 前言关于本篇的分享内容大语言模型大模型语言模型 百花齐放TransformerAuto-RegressiveResnetLayer-NormMaskScaled Dot-Product AttentionMulti-Head AttenionSelf-AttentionPositional Encoding关于并行计算关于长程依赖Transformer演化 GPT SeriesGPT-1GPT-2GPT-3 …

STM32存储左右互搏 I2C总线读写EEPROM AD24C02

STM32存储左右互搏 I2C总线读写EEPROM AD24C02 在较低容量存储领域&#xff0c;EEPROM是常用的存储介质&#xff0c;不同容量的EEPROM的地址对应位数不同&#xff0c;在发送字节的格式上有所区别。EEPROM是非快速访问存储&#xff0c;因为EEPROM按页进行组织&#xff0c;在连续…

数据库查询速度上不去的查询和分析

主要原因 数据库查询速度上不去、阻塞是指在并发访问 MySQL 数据库时,某个事务占用了资源并且长时间不释放,导致其他事务无法执行或执行缓慢的情况。MySQL 阻塞可能会导致数据库性能下降,甚至出现死锁等问题,需要马上进行处理。在 MySQL中,线程阻塞可能是由于以下原因导致…

vite 启动项目 报错 spawnargs: [ ‘--service=0.12.15‘, ‘--ping‘ ]

当前项目使用的是 vue3-antd-admin 框架 vue3-antd-admin 框架 详细地址 我们运行项目的时候发现报以下错误&#xff0c;npm i 了也不行, node:events:504throw er; // Unhandled error event^Error: spawn C:\Users\DELL\Desktop\vue3-antd-admin-master\node_modules\esbu…

阿里国际、敦煌、速卖通、沃尔玛、TEMU做测评补单核心关键点,看完你就会了

现在不管是做国内电商还是跨境电商&#xff0c;测评补单一直都有人在做&#xff0c;也确确实实的给卖家们带来了突破&#xff0c;不管是订单&#xff0c;留评&#xff0c;权重等等都有很大的提升&#xff0c;可以说有电商的地方就有测评补单&#xff0c;这是刚需。但是就像前人…

【C语言】深入理解C语言数据类型:从结构体到共用体和枚举的全面解析

目录 一、结构体概述及定义 1、概念 2、定义方式 方式1&#xff1a;先定义结构体类型&#xff0c;再定义结构体变量 方式2&#xff1a;定义结构体类型的同时定义结构体变量 方式3&#xff1a;定义一次性结构体 二、结构体变量的初始化 1、一般初始化 2、清空结构体变量…

【正点原子STM32连载】 第五十六章 DSP测试实验摘自【正点原子】STM32F103 战舰开发指南V1.2

1&#xff09;实验平台&#xff1a;正点原子stm32f103战舰开发板V4 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id609294757420 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html# 第五…

欧姆龙cp11以太网设置

捷米特JM-ETH-CP转以太网模块控&#xff0c;用于欧姆龙 CP1L/ CP1E/ CP1H 系列 PLC 的以太网数据采集&#xff0c;非常方便构建生产管理系统。 支持 FINS/UDP、FINS/TCP 以太网协议通信&#xff0c;支持上位机软件&#xff08;组态王、MCGS、力控、KepWare OPC 服务器等&#…

leetcode2373. 矩阵中的局部最大值

https://leetcode.cn/problems/largest-local-values-in-a-matrix/ 给你一个大小为 n x n 的整数矩阵 grid 。 生成一个大小为 (n - 2) x (n - 2) 的整数矩阵 maxLocal &#xff0c;并满足&#xff1a; maxLocal[i][j] 等于 grid 中以 i 1 行和 j 1 列为中心的 3 x 3 矩阵中…

【Android】报错java.lang.reflect.InvocationTargetException解决办法

报错信息&#xff1a;java.lang.reflect.InvocationTargetException反射层调用方法失败 结果图 原因 InvocationTargetException异常由Method.invoke(obj, args…)方法抛出。(反射异常) 当被调用的方法的内部抛出了异常而没有被捕获时&#xff0c;将由此异常接收&#xff01;&…

Stable Diffusion如何生成高质量的图-prompt写法介绍

文章目录 Stable Diffusion使用尝试下效果prompt的编写技巧prompt 和 negative promptPrompt格式Prompt规则细节优化Guidance Scale 总结 Stable Diffusion Stable Diffusion是一个开源的图像生成AI系统,由Anthropic公司开发。它基于 Transformer模型架构,可以通过文字描述生成…

查询每年最新的数据

1.最近在工作中遇到了一个需求,要求查询出每个党组织每年最新的数据 2.使用的sql语句为: SELECTCREATED_TIME,party_org_id,id FROMbranch_book WHERECREATED_TIME IN ( SELECT MAX( CREATED_TIME ) AS CREATED_TIME FROM branch_book GROUP BY DATE_FORMAT( year, %Y ), pa…