效果图如下:

CMain函数:

 package com.shubing.main;

 public class CMain
{
public static void main(String[] args)
{
MainFrame mainFrame = new MainFrame();
mainFrame.setVisible(true);
}
}

MainFrame函数:

 package com.shubing.main;

 import java.awt.*;
import java.awt.event.*;
import javax.swing.*; public class MainFrame extends JFrame implements ActionListener
{
public static boolean flag = false;
public JButton enter = new JButton("确定");
public JButton exit = new JButton("退出");
public JLabel text = new JLabel("点名");
public JLabel name = new JLabel("姓名");
public String[] nameList = {"王一","刘二","赵三","周四","马五","龙六","张七","贾八","钟九"};
public JLabel message = new JLabel("学生总数:"+nameList.length);
public EnterThread mainThread = null;
public MainFrame()
{
this.setTitle("点名系统");
this.setSize(,);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
this.setLayout(null); //布局为空;
this.setFocusable(false); text.setBounds(, , , );
name.setBounds(, , , );
enter.setBounds(, , , );
exit.setBounds(, , , );
message.setBounds(, , , ); this.add(text);
this.add(name);
this.add(enter);
this.add(exit);
this.add(message); enter.setEnabled(true);
exit.setEnabled(false); Font font = new Font("华文行楷",Font.BOLD,);
this.text.setFont(font);
this.name.setFont(font); enter.addActionListener(this);
exit.addActionListener(this);
} @Override
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == enter)
{
mainThread = new EnterThread(this);
mainThread.start();
enter.setEnabled(false);
exit.setEnabled(true);
}
if(e.getSource() == exit)
{
new ExitThread(this).start();
exit.setEnabled(false);
} } }

EnterThread函数:

 package com.shubing.main;

 public class EnterThread extends Thread
{
private MainFrame mainFrame = null;
private boolean isStop = true;
public int time = ; public EnterThread(MainFrame mainFrame)
{
this.mainFrame = mainFrame;
}
public void stopThread()
{
this.isStop = false;
}
public void run()
{
try
{
int index = ;
while(isStop)
{
if(index == this.mainFrame.nameList.length)
{
index = ;
}
this.mainFrame.name.setText(mainFrame.nameList[index]);
index ++; Thread.sleep(time);
}
}
catch (InterruptedException e)
{
e.printStackTrace();
}
this.mainFrame.enter.setEnabled(true);
}
}

ExitThread函数:

 package com.shubing.main;

 public class ExitThread extends Thread
{
private MainFrame mainFrame = null; public ExitThread(MainFrame mainFrame)
{
this.mainFrame = mainFrame;
} public void run()
{
try
{
for(int i=;i<=;i+=)
{
this.mainFrame.mainThread.time += i;
sleep();
}
}
catch (InterruptedException e)
{
e.printStackTrace();
}
mainFrame.mainThread.stopThread();
}
}

JAVA多线程实现简单的点名系统的更多相关文章

  1. Java 多线程安全问题简单切入详细解析

    线程安全 假如Java程序中有多个线程在同时运行,而这些线程可能会同时运行一部分的代码.如果说该Java程序每次运行的结果和单线程的运行结果是一样的,并且其他的变量值也都是和预期的结果是一样的,那么就 ...

  2. Java多线程——<三>简单的线程执行:Executor

    一.概述 按照<Java多线程——<一><二>>中所讲,我们要使用线程,目前都是显示的声明Thread,并调用其start()方法.多线程并行,明显我们需要声明多个 ...

  3. Java多线程实现简单的售票程序

    设计一个多线程程序如下:设计一个火车售票模拟程序.假如火车站要有100张火车票要卖出,现在有5个售票点同时售票,用5个线程模拟这5个售票点的售票情况 1.要求打印出每个售票点所卖出的票号 2.各售票点 ...

  4. java多线程的简单demo

    模拟场景:顾客买车从车库中取车,厂家生产车,车存储在车库中.买家.厂家对同一个车库中的车操作 一.不加同步机制的代码如下: package com.joysuch.testng.thread; imp ...

  5. Java多线程之简单的线程同步实例

    数据类: package Thread.MyCommon; public class Data { public int num = 0; public synchronized int getEve ...

  6. java多线程实现简单队列

    1.创建Queue.java public class Queue { private LinkedList<Object> list = new LinkedList<Object ...

  7. Java多线程学习(一)Java多线程入门

    转载请备注地址:https://blog.csdn.net/qq_34337272/article/details/79640870 系列文章传送门: Java多线程学习(一)Java多线程入门 Ja ...

  8. Java多线程——<八>多线程其他概念

    一.概述 到第八节,就把多线程基本的概念都说完了.把前面的所有文章加连接在此: Java多线程——<一>概述.定义任务 Java多线程——<二>将任务交给线程,线程声明及启动 ...

  9. java多线程那点事

    屌丝程序员们对自己的技术能力总是毫不掩饰的高调,更有甚者每当完成一个简单的功能或算法实现,恨不得从工位上跳起来,生怕谁不知道一样,心情能理解,但个人完全鄙视这种行为.说到底,大家日常的coding,大 ...

随机推荐

  1. DONET三层架构开发初步

    .NET三层架构开发初步 今天咱们来谈下三层架构.说到三层架构,搞过点程序的可能都知道三层架构的概念.但是对三层的精髓可能不是很了解. 首先说下自己对三层的理解,就是使用三个(多个)项目结合起来开发出 ...

  2. Android 常用的快捷键(随时更新)

    android studio 是google出的一款好用不贵的ide,好像是powerd by idea的那个公司,反正风格上差不多.下面是android studio常用的快捷键设置,记录一下自己用 ...

  3. android studio 更改背景和设置字体大小

    1,设置字体大小 2,设置背景主题

  4. 安装好Windows 8后必做的几件事情,让你的Win8跑的更快更流畅。

    1.关闭家庭组,因为这功能会导致硬盘和CPU处于高负荷状态. 关闭方法:Win+C-设置-更改电脑设置-家庭组-离开 如果用不到家庭组可以直接把家庭组服务也给关闭了:控制面板-管理工具-服务-Home ...

  5. IOS7 隐藏状态栏

    - (UIStatusBarStyle)preferredStatusBarStyle { return UIStatusBarStyleLightContent; } // - (BOOL)pref ...

  6. SCOM随笔

    1.在监控群集资源时,安装完agent后,在代理管理-agent属性中选中“允许此代理充当代理并发现其他计算机上的托管对象” 如果监控DC的话,也要选中该选项

  7. 【转】SQL语句中的正则表达示

    正则表达式作用是匹配方本,将一个模式(正则表达式)与一个文本串进行比较. MySQL用WHERE子句对正则表达式提供了初步的支持,允许你指定用正则表达式过滤SELECT检索出的数据. MySQL仅支持 ...

  8. jquery处理单击和双击事件

    今天做div点击时,需要用到同一div的单击和双击事件,出现问题如下 例子: Html <body> <div id="div_1">单击双击我</d ...

  9. [AngularJS] Using AngularJS interceptors with $http

    Sometimes you might need to modify HTTP requests and responses. This could be for a variety of reaso ...

  10. [cocos2dx笔记004] android添加�静态库project

    (基于2.2.2版本号) 这步比較麻烦,不像vs2013那样好设置.參考了非常多文章.还是不能解决这个问题.仅仅有慢慢摸索了.在这里贴出来,希望能让大家能少走点弯路. 还是其于前面的文章提到的myli ...