• JAVA多线程实现简单的点名系统


    效果图如下:

    CMain函数:

     1 package com.shubing.main;
     2 
     3 public class CMain
     4 {
     5     public static void main(String[] args) 
     6     {
     7         MainFrame mainFrame = new MainFrame();
     8         mainFrame.setVisible(true);
     9     }
    10 }
    View Code

    MainFrame函数:

     1 package com.shubing.main;
     2 
     3 import java.awt.*;
     4 import java.awt.event.*;
     5 import javax.swing.*;
     6 
     7 public class MainFrame extends JFrame implements ActionListener
     8 {
     9     public static boolean flag = false;
    10     public JButton enter = new JButton("确定");
    11     public JButton exit = new JButton("退出");
    12     public JLabel text = new JLabel("点名");
    13     public JLabel name = new JLabel("姓名");
    14     public String[] nameList = {"王一","刘二","赵三","周四","马五","龙六","张七","贾八","钟九"};
    15     public JLabel message = new JLabel("学生总数:"+nameList.length);
    16     public EnterThread mainThread = null;
    17     public MainFrame()
    18     {
    19         this.setTitle("点名系统");
    20         this.setSize(230,150);
    21         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    22         this.setLocationRelativeTo(null);
    23         this.setLayout(null);    //布局为空;
    24         this.setFocusable(false);
    25     
    26         text.setBounds(20, 10, 100, 30);
    27         name.setBounds(100, 10, 180, 30);
    28         enter.setBounds(20, 50, 80, 20);
    29         exit.setBounds(110, 50, 80, 20);
    30         message.setBounds(120, 80, 100, 20);
    31         
    32         this.add(text);
    33         this.add(name);
    34         this.add(enter);
    35         this.add(exit);
    36         this.add(message);
    37         
    38         enter.setEnabled(true);
    39         exit.setEnabled(false);
    40         
    41         Font font = new Font("华文行楷",Font.BOLD,22);
    42         this.text.setFont(font);
    43         this.name.setFont(font);
    44         
    45         enter.addActionListener(this);
    46         exit.addActionListener(this);
    47     }
    48     
    49     @Override
    50     public void actionPerformed(ActionEvent e) 
    51     {
    52         if(e.getSource() == enter)
    53         {
    54             mainThread = new EnterThread(this);
    55             mainThread.start();
    56             enter.setEnabled(false);
    57             exit.setEnabled(true);
    58         }
    59         if(e.getSource() == exit)
    60         {
    61             new ExitThread(this).start();
    62             exit.setEnabled(false);
    63         }
    64         
    65     }
    66     
    67 }
    View Code

    EnterThread函数:

     1 package com.shubing.main;
     2 
     3 public class EnterThread extends Thread
     4 {
     5     private MainFrame mainFrame = null;
     6     private boolean isStop = true;
     7     public int time = 50;
     8     
     9     public EnterThread(MainFrame mainFrame)
    10     {
    11         this.mainFrame = mainFrame;
    12     }
    13     public void stopThread()
    14     {
    15         this.isStop = false;
    16     }
    17     public void run()
    18     {
    19         try 
    20         {
    21             int index = 0;
    22             while(isStop)
    23             {
    24                 if(index == this.mainFrame.nameList.length)
    25                 {
    26                     index = 0;
    27                 }
    28                 this.mainFrame.name.setText(mainFrame.nameList[index]);
    29                 index ++;
    30 
    31                 Thread.sleep(time);
    32             }
    33         } 
    34         catch (InterruptedException e) 
    35         {
    36             e.printStackTrace();
    37         }
    38         this.mainFrame.enter.setEnabled(true);
    39     }
    40 }
    View Code

    ExitThread函数:

     1 package com.shubing.main;
     2 
     3 public class ExitThread extends Thread
     4 {
     5     private MainFrame mainFrame = null;
     6 
     7     public ExitThread(MainFrame mainFrame)
     8     {
     9         this.mainFrame = mainFrame;
    10     }
    11 
    12     public void run()
    13     {
    14         try 
    15         {
    16             for(int i=0;i<=400;i+=50)
    17             {
    18                 this.mainFrame.mainThread.time += i;
    19                 sleep(1600);
    20             }
    21         } 
    22         catch (InterruptedException e) 
    23         {
    24             e.printStackTrace();
    25         }
    26         mainFrame.mainThread.stopThread();
    27     }
    28 }
    View Code
  • 相关阅读:
    Linux
    CUDA开发
    Linux C++
    Python
    C++
    模式识别
    Linux
    算法
    算法
    leetcode 数组,链表,跳表
  • 原文地址:https://www.cnblogs.com/acm-bingzi/p/3603850.html
Copyright © 2020-2023  润新知