import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.text.*;
public class Frame extends JFrame {JTextField text_word[],texts[],text=new JTextField(8);JButton buttons[];int sleeptime;Font font =new Font("宋体",1,18);public Frame(String[] Texts){super("售票厅");this.setBounds(300,300,540,300);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.getContentPane().add(new Safe(Texts));this.setVisible(true);}public class Safe  extends JPanel implements ActionListener,Runnable{JTextField text_word[],texts[],text=new JTextField(8),surtext=new JTextField(8);JButton buttons[],buttons2[];int sleeptime;Font font =new Font("宋体",1,18);private int num;boolean flag=true;Thread sell1,sell2,sell3;public Safe(String Texts[]) {this.setLayout(new GridLayout(Texts.length*2+1,1));this.text_word = new JTextField[Texts.length];JPanel cmdpanel[] = new JPanel[Texts.length];this.texts = new JTextField[Texts.length];for(int i=0;i<Texts.length;i++){this.text_word[i] = new JTextField(Texts[i]);this.text_word[i].setFont(font);text_word[i].setHorizontalAlignment(JTextField.CENTER);this.texts[i] = new JTextField("关闭中",8);this.texts[i].setEditable(false);}this.buttons = new JButton[Texts.length+1];this.buttons2 = new JButton[Texts.length];for(int i=0;i<Texts.length;i++){this.buttons2[i] = new JButton("开启");this.buttons2[i].addActionListener(this);this.buttons2[i].setEnabled(false);this.buttons[i] = new JButton("关闭");this.buttons[i].addActionListener(this);this.buttons[i].setEnabled(false);}this.buttons[Texts.length] =new JButton("启动"); this.buttons[Texts.length].addActionListener(this);for(int i=0;i<Texts.length;i++) {this.add(text_word[i]);cmdpanel[i]=new JPanel();this.add(cmdpanel[i]);cmdpanel[i].add(new JLabel("窗体情况"));cmdpanel[i].add(texts[i]);cmdpanel[i].add(this.buttons[i]);cmdpanel[i].add(this.buttons2[i]);}JPanel cmd = new JPanel();JLabel label= new JLabel("发售票数") ; text.addActionListener(this);this.add(cmd);cmd.add(label);cmd.add(text);cmd.add(new JLabel("剩余票数"));cmd.add(surtext);cmd.add(buttons[Texts.length]);label.setHorizontalAlignment(SwingConstants.CENTER);sell1= new Thread(this,"窗口1");sell2 =new Thread(this,"窗口2");sell3 =new Thread(this,"窗口3");}public void run() {while(flag){try {sale();Thread.sleep((int)(Math.random()*4000+1000));}catch(InterruptedException e) {break;}}}//互斥方法private synchronized void sale() {if(num > 0) {Date date= new Date();SimpleDateFormat ft = new SimpleDateFormat ("hh:mm:ss");try {Thread.sleep((int)(Math.random()*2000+1000));if(Thread.currentThread().getName()=="窗口1"){this.text_word[0].setText(Thread.currentThread().getName()+"卖出了第"+num--+"张票"+ft.format(date));this.surtext.setText(""+this.num);}else if(Thread.currentThread().getName()=="窗口2"){this.text_word[1].setText(Thread.currentThread().getName()+"卖出了第"+num--+"张票"+ft.format(date));this.surtext.setText(""+this.num);}else if(Thread.currentThread().getName()=="窗口3"){this.text_word[2].setText(Thread.currentThread().getName()+"卖出了第"+num--+"张票"+ft.format(date));this.surtext.setText(""+this.num);}} catch(InterruptedException e) {}}else {for(int i=0;i<3;i++)this.text_word[i].setText("票卖完了");flag = false;return;}}public void actionPerformed(ActionEvent event) {if(event.getSource()==this.text){try{this.num = Integer.parseInt(this.text.getText());this.surtext.setText(this.text.getText());}catch(NumberFormatException ex){JOptionPane.showMessageDialog(this, "\""+this.text.getText()+"\"不能转换成整数,重新输入售票数!");}}if(event.getSource()==this.buttons[3]){for(int i=0;i<3;i++){this.texts[i].setText("售卖中");this.buttons[i].setEnabled(true);}if(num!=0 ){if( this.sell1.getState() != Thread.State.NEW){ sell1= new Thread(this,"窗口1");}if(this.sell2.getState() != Thread.State.NEW){sell2 =new Thread(this,"窗口2");}if(this.sell3.getState() != Thread.State.NEW){sell3 =new Thread(this,"窗口3");}}sell1.start();sell2.start();sell3.start();}if(event.getSource() ==this.buttons[0]){if(sell1.isAlive()){sell1.interrupt();this.texts[0].setText("关闭中");this.buttons[0].setEnabled(false);this.buttons2[0].setEnabled(true);}}if(event.getSource() ==this.buttons[1]){if(sell2.isAlive()){sell2.interrupt();this.texts[1].setText("关闭中");this.buttons[1].setEnabled(false);this.buttons2[1].setEnabled(true);}}if(event.getSource() ==this.buttons[2]){if(sell3.isAlive()){sell3.interrupt();this.texts[2].setText("关闭中");this.buttons[2].setEnabled(false);this.buttons2[2].setEnabled(true);}}if(event.getSource() ==this.buttons2[0]){if( this.sell1.getState() != Thread.State.NEW){ sell1= new Thread(this,"窗口1");sell1.start();this.buttons[0].setEnabled(true);this.texts[0].setText("售票中");this.buttons2[0].setEnabled(false);}}if(event.getSource() ==this.buttons2[1]){if(this.sell2.getState() != Thread.State.NEW){sell2 =new Thread(this,"窗口2");sell2.start();this.texts[1].setText("售票中");this.buttons[1].setEnabled(true);this.buttons2[1].setEnabled(false);}}if(event.getSource() ==this.buttons2[2]){if(this.sell3.getState() != Thread.State.NEW){sell3 =new Thread(this,"窗口3");sell3.start();this.texts[2].setText("售票中");this.buttons[2].setEnabled(true);this.buttons2[2].setEnabled(false);}}}}public static void main(String[] args) {String Texts[] = {"窗口1","窗口2","窗口3"};new Frame(Texts);}
}

java通讯课程实验 - 简单的售票厅相关推荐

  1. java通讯课程_Java项目实战-仿QQ即时通讯软件视频课程

    1.学习JAVA的Swing做UI设计, 2学习用JAVA语言进行数据库编程,熟练使用Connection,Statement,PreparedStatement,ResultSet等数据库类库: 3 ...

  2. Java程序设计课程——实验2

    /* * 2022年11月12日 * SpraingBoy */ 1.求任意输入的10个数的和. public static int Sum(int[] arr, int len){ // 数组作为参 ...

  3. java程序设计教程实验报告_java程序设计课程--实验报告-实验13.doc

    java程序设计课程--实验报告-实验13.doc 还剩 12页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要点: ...

  4. 《Java 2 实用教程》课程学习(17)——《Java 程序设计》实验指导书-校内实验教材

    ****大学 <Java程序设计> 实验指导书 编者:王* 潘** 肖* 杨** 主审:刘** ********学院信息科学系 2013年1月9日 前  言 <Java 程序设计实验 ...

  5. java音乐系统实验报告_java程序设计课程设计报告音乐播放器.docx

    java程序设计课程设计报告音乐播放器.docx JAVA及JAVAWEB应用开发实验报告设计题目JAVA音乐播放器专业计算机信息管理班级1班学号姓名2014年12月24日IMPORTJAVAXMED ...

  6. java课程设计数字日历,java课程设计简单日历.doc

    java课程设计简单日历.doc java课程设计报告题目:JAVA简易时间日历程序学生姓名:董兆军学号:2010314120专业班级:信101指导教师:李红强Java课程设计报告信101董兆军201 ...

  7. 大学java课程设计-简单五子棋

    大学java课程设计-简单五子棋 前言 效果图 课设要求 五子棋介绍 五子棋介绍 游戏玩法 系统需求分析 系统的设计与实现 项目工程结构 运行环境 代码设计 前言 第一次写博客,不知道写些什么,就打算 ...

  8. 《Java程序设计》实验二 实验报告

    实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验要求 1.没有Lin ...

  9. java程序设计实验报告册_20145215《Java程序设计》实验一实验报告

    实验一 Java开发环境的熟悉 实验内容及步骤 使用JDK编译.运行简单的Java程序 命令行下程序开发: 在命令行下建立实验目录,进入该目录后创建exp1目录 敲入以下代码: package exp ...

  10. 20155207王雪纯 《Java程序设计》实验一报告

    20155207王雪纯 <Java程序设计>实验一报告 课程:Java程序设计 班级:1552 指导教师:娄嘉鹏 实验日期:2017.04.07 实验名称:Java开发环境的熟悉(Linu ...

最新文章

  1. android 字符串,textview
  2. 产品工作中的金字塔原理
  3. Swift之深入解析可选类型Optional的底层原理
  4. Windows Azure 真实案例:CCH 财政服务独立软件开发商(ISV)通过托管服务获得了灵活性并节省成本...
  5. 自适应滤波实例之系统逆辨识(以及系统零极点对逆辨识效果的影响分析)
  6. Candies-POJ 3159
  7. java读取word文档内容_合并多个Word文档内容,还在复制粘贴就out了,同事五秒轻松搞定...
  8. SpringCloud工作笔记038---spring cloud-简单网关权限控制_直接在zuul里面做
  9. mysql有没有模式,关于sql:没有数据的MySql导出模式
  10. Javascript事件模型系列(一)事件及事件的三种模型
  11. numpy系列之拷贝和视图
  12. 质谱的工作原理及发展史
  13. HTML 前后端分离,再谈前后端分离开发和部署
  14. ES3~ES6数组的方法总结
  15. 关于奥威亚自动录播系统的设置使用小笔记
  16. 给仍在「 选品 」的跨境卖家提个醒!
  17. Java根据模板生成PDF文件|添加盖章|添加水印
  18. 别去赌场了,你永远赢不了“凯利公式”
  19. SpaceSyntax【空间句法】之DepthMapX学习:唠叨(目录)
  20. PHP 如何安装ionCube扩展

热门文章

  1. PyQt5 图标设置
  2. watch、star、fork
  3. vues3中vuex的简单使用的两种方式
  4. 英语考证和计算机考证同一天
  5. 多商户商城系统功能拆解09讲-平台端商品品牌
  6. pandas中遍历dataframe的每一个元素
  7. 【Python】03-15种字符串操作
  8. 宁波游记:千年神奇保国寺的思索
  9. 基于seata1.0和spring cloud的Greenwich.SR2版本的分布式事务demo例子的实现全过程
  10. 计算机设备评分标准,计算机打字技能大赛规则及评分标准(1)