📄 frame.java
字号:
package bankserver;
import javax.swing.*;
import java.awt.Rectangle;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.Color;
import java.util.Random;
public class frame extends JFrame
{
int arr[]=new int[500];
int num=0;
String str="";
int flag=0;
int cnum=1;
thread th1;
thread th2;
thread th3;
thread th4;
thread th5;
thread th6;
public frame()
{
try
{
jbInit();
} catch (Exception ex) {
ex.printStackTrace();
}
}
public static void main(String[] args)////////////主函数
{
frame frame = new frame();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void jbInit() throws Exception {
this.setSize(1020,500);
this.setLocation(0,50);
this.getContentPane().setLayout(null);
jTextField1.setRequestFocusEnabled(false);
jTextField1.setEditable(false);
jTextField1.setBounds(new Rectangle(4, 129, 148, 23));
jTextField1.addActionListener(new Frame_jTextField1_actionAdapter(this));
jLabel1.setFont(new java.awt.Font("宋体", Font.BOLD, 18));
jLabel1.setForeground(Color.blue);
jLabel1.setText("银行服务厅");
jLabel1.setBounds(new Rectangle(489, 20, 116, 25));
jTextField5.setEditable(false);
jTextField5.setBounds(new Rectangle(833, 126, 168, 25));
jTextField4.setEditable(false);
jTextField4.setBounds(new Rectangle(618, 127, 171, 25));
jTextField3.setEditable(false);
jTextField3.setBounds(new Rectangle(391, 129, 180, 25));
jTextField2.setEditable(false);
jTextField2.setBounds(new Rectangle(185, 128, 160, 26));
jLabel4.setText("窗口三");
jLabel4.setBounds(new Rectangle(463, 75, 42, 15));
jLabel3.setText("窗口二");
jLabel3.setBounds(new Rectangle(240, 72, 42, 15));
jLabel2.setText("窗口一");
jLabel2.setBounds(new Rectangle(49, 73, 42, 15));
jTextField6.setEditable(false);
jButton3.setBounds(new Rectangle(513, 325, 111, 23));
jButton3.setText("新进顾客");
jButton3.addActionListener(new Frame_jButton3_actionAdapter(this));
jButton2.setBounds(new Rectangle(315, 324, 81, 23));
jButton2.setText("下班");
jButton2.addActionListener(new Frame_jButton2_actionAdapter(this));
jButton1.setBounds(new Rectangle(127, 323, 81, 23));
jButton1.setText("上班");
jButton1.addActionListener(new Frame_jButton1_actionAdapter(this));
jTextField6.setBounds(new Rectangle(130, 223, 870, 25));
jTextField6.addActionListener(new frame_jTextField6_actionAdapter(this));
jLabel7.setText("顾客时间片队列");
jLabel7.setBounds(new Rectangle(18, 218, 112, 28));
jLabel6.setText("窗口五");
jLabel6.setBounds(new Rectangle(887, 64, 42, 15));
jLabel5.setText("窗口四");
jLabel5.setBounds(new Rectangle(663, 68, 42, 15));
this.getContentPane().add(jButton1);
this.getContentPane().add(jButton2);
this.getContentPane().add(jButton3);
this.getContentPane().add(jTextField6);
this.getContentPane().add(jLabel7);
this.getContentPane().add(jLabel1);
this.getContentPane().add(jLabel3);
this.getContentPane().add(jLabel2);
this.getContentPane().add(jTextField1);
this.getContentPane().add(jTextField3);
this.getContentPane().add(jLabel4);
this.getContentPane().add(jTextField2);
this.getContentPane().add(jTextField4);
this.getContentPane().add(jLabel5);
this.getContentPane().add(jLabel6);
this.getContentPane().add(jTextField5);
jButton2.setVisible(false);
jButton3.setVisible(false);
}
JLabel jLabel1 = new JLabel();
JTextField jTextField1 = new JTextField();
JTextField jTextField2 = new JTextField();
JTextField jTextField3 = new JTextField();
JTextField jTextField4 = new JTextField();
JTextField jTextField5 = new JTextField();
JLabel jLabel2 = new JLabel();
JLabel jLabel3 = new JLabel();
JLabel jLabel4 = new JLabel();
JLabel jLabel5 = new JLabel();
JLabel jLabel6 = new JLabel();
JLabel jLabel7 = new JLabel();
JTextField jTextField6 = new JTextField();
JButton jButton1 = new JButton();
JButton jButton2 = new JButton();
JButton jButton3 = new JButton();
public void jTextField1_actionPerformed(ActionEvent e) {
}
public void jButton1_actionPerformed(ActionEvent e) //////上班 启动线程
{
flag=0;
jTextField1.setText("空闲");
jTextField2.setText("空闲");
jTextField3.setText("空闲");
jTextField4.setText("空闲");
jTextField5.setText("空闲");
jButton1.setVisible(false);
jButton2.setVisible(true);
jButton3.setVisible(true);
th1 = new thread();
th2 = new thread();
th3 = new thread();
th4 = new thread();
th5 = new thread();
th1.setName("th1");
th2.setName("th2");
th3.setName("th3");
th4.setName("th4");
th5.setName("th5");
th1.start();
th2.start();
th3.start();
th4.start();
th5.start();
}
public void jButton2_actionPerformed(ActionEvent e) ////////下班 停止线程
{
thread td=new thread();
td.start();
td.changeflag(2);
th1.interrupt();
th2.interrupt();
th3.interrupt();
th4.interrupt();
th5.interrupt();
// flag=-1;
cnum=1;
jTextField1.setText("已下班");
jTextField2.setText("已下班");
jTextField3.setText("已下班");
jTextField4.setText("已下班");
jTextField5.setText("已下班");
jTextField6.setText("");
jButton2.setVisible(false);
jButton1.setVisible(true);
jButton3.setVisible(false);
}
public void jButton3_actionPerformed(ActionEvent e)////////新顾客
{
th6=new thread();
th6.setName("th6");
th6.start();
}
class thread extends Thread//implements Runnable///************内部类线程类
{
JTextField jt = new JTextField();
Object obj=new Object();
int j=0;
public synchronized void run()
{
String str1 = this.currentThread().getName();////////////获取当前线程的名字
if (str1.equals("th6"))
{
j = 0;
changeflag(0);
System.out.println("flag=" + flag);
Random autoRand = new Random();
int random = autoRand.nextInt() % 11;
while (random <= 0) {
random = autoRand.nextInt() % 11;
}
arr[num] = random;
str = str + arr[num] + "|";
System.out.println(str);
num++;
jTextField6.setText(str);
}
if (str1.equals("th1"))
{
jt = jTextField1;
j=1;
}
if (str1.equals("th2"))
{
j=1;
jt = jTextField2;
}
if (str1.equals("th3"))
{
j=1;
jt = jTextField3;
}
if (str1.equals("th4"))
{
j=1;
jt = jTextField4;
}
if (str1.equals("th5"))
{
j=1;
jt = jTextField5;
}
if(j==1)
{
while (true)//////////******************线程服务区**************
{
synchronized(obj)
{
if(flag==-1) break;
if (flag <= 0)
{
try
{
this.sleep(1000);
System.out.println("sleep");
jt.setText("空闲..");
}
catch (Exception ex)
{
}
}
else
{
try
{
int t=Integer.parseInt(str.substring(0,str.indexOf("|")));
str=str.substring( str.indexOf("|")+1,str.length());
jTextField6.setText(str);
jt.setText("为顾客"+cnum + "服务 时间:"+t);
cnum++;
changeflag(1);
System.out.println("时间:"+t);
sleep(t*1000);////////////////////服务期线程睡眠
}
catch (Exception ex) {}
}
}
}
}
}
public synchronized void changeflag(int i)//////////修改公共变量flag
{
if(i==0)
{
flag++;
}
if(i==1)
{
flag--;
}
if(i==2)
{
flag=-1;
str="";
}
}
}
public void jTextField6_actionPerformed(ActionEvent e) {
}
}
class frame_jTextField6_actionAdapter implements ActionListener {
private frame adaptee;
frame_jTextField6_actionAdapter(frame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jTextField6_actionPerformed(e);
}
}
class Frame_jButton3_actionAdapter implements ActionListener {
private frame adaptee;
Frame_jButton3_actionAdapter(frame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton3_actionPerformed(e);
}
}
class Frame_jButton2_actionAdapter implements ActionListener {
private frame adaptee;
Frame_jButton2_actionAdapter(frame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton2_actionPerformed(e);
}
}
class Frame_jButton1_actionAdapter implements ActionListener {
private frame adaptee;
Frame_jButton1_actionAdapter(frame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton1_actionPerformed(e);
}
}
class Frame_jTextField1_actionAdapter implements ActionListener {
private frame adaptee;
Frame_jTextField1_actionAdapter(frame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jTextField1_actionPerformed(e);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -