java通讯课程实验 - 简单的售票厅
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通讯课程实验 - 简单的售票厅相关推荐
- java通讯课程_Java项目实战-仿QQ即时通讯软件视频课程
1.学习JAVA的Swing做UI设计, 2学习用JAVA语言进行数据库编程,熟练使用Connection,Statement,PreparedStatement,ResultSet等数据库类库: 3 ...
- Java程序设计课程——实验2
/* * 2022年11月12日 * SpraingBoy */ 1.求任意输入的10个数的和. public static int Sum(int[] arr, int len){ // 数组作为参 ...
- java程序设计教程实验报告_java程序设计课程--实验报告-实验13.doc
java程序设计课程--实验报告-实验13.doc 还剩 12页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要点: ...
- 《Java 2 实用教程》课程学习(17)——《Java 程序设计》实验指导书-校内实验教材
****大学 <Java程序设计> 实验指导书 编者:王* 潘** 肖* 杨** 主审:刘** ********学院信息科学系 2013年1月9日 前 言 <Java 程序设计实验 ...
- java音乐系统实验报告_java程序设计课程设计报告音乐播放器.docx
java程序设计课程设计报告音乐播放器.docx JAVA及JAVAWEB应用开发实验报告设计题目JAVA音乐播放器专业计算机信息管理班级1班学号姓名2014年12月24日IMPORTJAVAXMED ...
- java课程设计数字日历,java课程设计简单日历.doc
java课程设计简单日历.doc java课程设计报告题目:JAVA简易时间日历程序学生姓名:董兆军学号:2010314120专业班级:信101指导教师:李红强Java课程设计报告信101董兆军201 ...
- 大学java课程设计-简单五子棋
大学java课程设计-简单五子棋 前言 效果图 课设要求 五子棋介绍 五子棋介绍 游戏玩法 系统需求分析 系统的设计与实现 项目工程结构 运行环境 代码设计 前言 第一次写博客,不知道写些什么,就打算 ...
- 《Java程序设计》实验二 实验报告
实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验要求 1.没有Lin ...
- java程序设计实验报告册_20145215《Java程序设计》实验一实验报告
实验一 Java开发环境的熟悉 实验内容及步骤 使用JDK编译.运行简单的Java程序 命令行下程序开发: 在命令行下建立实验目录,进入该目录后创建exp1目录 敲入以下代码: package exp ...
- 20155207王雪纯 《Java程序设计》实验一报告
20155207王雪纯 <Java程序设计>实验一报告 课程:Java程序设计 班级:1552 指导教师:娄嘉鹏 实验日期:2017.04.07 实验名称:Java开发环境的熟悉(Linu ...
最新文章
- android 字符串,textview
- 产品工作中的金字塔原理
- Swift之深入解析可选类型Optional的底层原理
- Windows Azure 真实案例:CCH 财政服务独立软件开发商(ISV)通过托管服务获得了灵活性并节省成本...
- 自适应滤波实例之系统逆辨识(以及系统零极点对逆辨识效果的影响分析)
- Candies-POJ 3159
- java读取word文档内容_合并多个Word文档内容,还在复制粘贴就out了,同事五秒轻松搞定...
- SpringCloud工作笔记038---spring cloud-简单网关权限控制_直接在zuul里面做
- mysql有没有模式,关于sql:没有数据的MySql导出模式
- Javascript事件模型系列(一)事件及事件的三种模型
- numpy系列之拷贝和视图
- 质谱的工作原理及发展史
- HTML 前后端分离,再谈前后端分离开发和部署
- ES3~ES6数组的方法总结
- 关于奥威亚自动录播系统的设置使用小笔记
- 给仍在「 选品 」的跨境卖家提个醒!
- Java根据模板生成PDF文件|添加盖章|添加水印
- 别去赌场了,你永远赢不了“凯利公式”
- SpaceSyntax【空间句法】之DepthMapX学习:唠叨(目录)
- PHP 如何安装ionCube扩展