带界面的消费者生产者问题JAVA代码
更新时间:2023-09-24 10:22:01 阅读量: IT计算机 文档下载
- 消费者剩余和生产者剩余推荐度:
- 相关推荐
import java.awt.Component; import java.awt.Container; import java.awt.Graphics; import java.awt.GridLayout; import java.awt.Image;
import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BorderFactory; import javax.swing.Icon;
import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel;
//通过本次实验,知晓两个问题:1.repaint()方法不能在主方法(主类)中使用(否则会引起背景透明问题);2.默认布局会引起组件覆盖问题。
//bug1:如果非第一次执行开始模拟按钮index值为零,程序会直接退出;
//bug2:当产品为零时,点恢复模拟,因为生产者较快。仓库第一格会没有产品. //bug3:生产速度必须大于等于生产速度;不要问我为什么,老子也很烦恼. //如果有大神解决了BUG请回传给我谢谢
public class consumerandproducer extends JFrame { private static final long serialVersionUID = 1L; public static JLabel jl5=new JLabel(); public static int index=0; Icon icon=new ImageIcon(\ public static JLabel jl6=new JLabel(\ public static JLabel jl8=new JLabel(\ public static JLabel jl7=new JLabel(\ public static JLabel jl9=new JLabel(\ public static JLabel jl10=new JLabel(\ public static JLabel jl11=new JLabel(\ public static JLabel jl12=new JLabel(\ public static JLabel jl13=new JLabel(\ public static JLabel jl14=new JLabel(\ public static JLabel jlabel; public static JLabel mark;//为生产按钮设置标记 public static JLabel mark1;//为消费按钮设置标记 testing11 test=new testing11(); testing22 test2=new testing22(); Container ff=this.getContentPane(); public consumerandproducer(String title) { super(title); ff.add(test); ff.add(test2); setBounds(200,200,900,653); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(null);
jl5.setBounds(620,40,200,200);
jl5.setBorder(BorderFactory.createEtchedBorder()); jl5.setLayout(new GridLayout(3,3)); add(jl5);
jlabel=new JLabel(\消息显示器\jlabel.setBounds(2,500,390,100);
jlabel.setBorder(BorderFactory.createEtchedBorder()); add(jlabel);
mark=new JLabel(\生产进行中\mark1=new JLabel(\消费进行中\add(mark); add(mark1);
jl6.setSize(20,20); jl7.setSize(20,20); jl8.setSize(20,20); jl9.setSize(20,20); jl10.setSize(20,20); jl11.setSize(20,20); jl12.setSize(20,20); jl13.setSize(20,20); jl14.setSize(20,20); jl5.add(jl6); jl5.add(jl7); jl5.add(jl8); jl5.add(jl9); jl5.add(jl10); jl5.add(jl11); jl5.add(jl12); jl5.add(jl13); jl5.add(jl14);
jl6.setBorder(BorderFactory.createEtchedBorder()); jl7.setBorder(BorderFactory.createEtchedBorder()); jl8.setBorder(BorderFactory.createEtchedBorder()); jl9.setBorder(BorderFactory.createEtchedBorder()); jl10.setBorder(BorderFactory.createEtchedBorder()); jl11.setBorder(BorderFactory.createEtchedBorder()); jl12.setBorder(BorderFactory.createEtchedBorder()); jl13.setBorder(BorderFactory.createEtchedBorder()); jl14.setBorder(BorderFactory.createEtchedBorder());
}
public static void main(String args[]) { consumerandproducer frame = new consumerandproducer(\模拟消费者生产者实验\ frame.setVisible(true); frame.setLayout(null); Thread3 tt=new Thread3(frame); tt.start(); }
}
//生产者线程
class testing22 extends JPanel { private static final long serialVersionUID = 1L; public static Thread1 dd1=new Thread1(); public static ImageIcon icon; public static int x=0,y=60; JLabel jl3; Image icon1; JButton jb3,jb4; public testing22() { setLayout(null); this.setBounds(38,78,320,270); icon=new ImageIcon(\ icon1=icon.getImage(); final JButton jb3=new JButton(\开始消费\ final JButton jb4=new JButton(\停止消费\ JLabel jl6 = new JLabel(\模拟消费者\ jl6.setBounds(125,5,75,30); this.add(jl6); jl6.setBorder(BorderFactory.createEtchedBorder()); this.add(jb3); this.add(jb4); jb3.setBounds(45,146,120,50); jb4.setBounds(175,146,120,50); jb4.addActionListener(new ActionListener() { @SuppressWarnings(\ public void actionPerformed(ActionEvent e) { if(e.getSource()==jb4&&e.getActionCommand().equals(\停止消费\ { dd1.suspend(); consumerandproducer.mark1.setText(\消费已停止\ } } }); jb3.addActionListener(new ActionListener() { @SuppressWarnings(\ public void actionPerformed(ActionEvent e) { if(e.getSource()==jb3&&e.getActionCommand().equals(\开始消费\ { if(consumerandproducer.index<1) { dd1.suspend(); consumerandproducer.jlabel.setText(\仓库里没有产品或已经消费完毕!\ consumerandproducer.mark1.setText(\消费进行中\
} dd1.resume(); return; } } }); } public void paint(Graphics g) {if(x>getWidth()) { x=-50; if(consumerandproducer.mark.getText()==\生产进行中\ { testing11.dd.resume(); } if(consumerandproducer.index<2) { dd1.suspend(); // testing11.dd.suspend(); } Component[] labels = consumerandproducer.jl5.getComponents (); ((JLabel)labels[--consumerandproducer.index]).setIcon (null); if(consumerandproducer.index==0) { consumerandproducer.jlabel.setText(\仓库产品已消费完毕,请生产产品或者恢复模拟!\ } if(consumerandproducer.index!=0) { consumerandproducer.jlabel.setText(\消费状态下当前仓库产品数量为:\ } } super.paint(g); g.drawImage(icon1, x, y, jl3); repaint(); } }
class Thread1 extends Thread { public void run() { while(true) { testing22.x+=10; try
{ Thread2.sleep(50); } catch (InterruptedException e) { e.printStackTrace(); } } } }
//消费者线程
class testing11 extends JPanel { private static final long serialVersionUID = 1L; public static Thread2 dd=new Thread2(); public static ImageIcon icon; public static int x=0,y=60; JLabel jl1; Image icon1; JButton jb1,jb2; public testing11() { setLayout(null); this.setBounds(420,400,320,440); icon=new ImageIcon(\ icon1=icon.getImage(); final JButton jb1=new JButton(\开始生产\ final JButton jb2=new JButton(\停止生产\ JLabel jl3 = new JLabel(\模拟生产者\ jl3.setBounds(125,5,75,30); this.add(jl3); jl3.setBorder(BorderFactory.createEtchedBorder()); this.add(jb1); this.add(jb2); jb1.setBounds(45,146,120,50); jb2.setBounds(175,146,120,50); jb2.addActionListener(new ActionListener() { @SuppressWarnings(\ public void actionPerformed(ActionEvent e) { if(e.getSource()==jb2&&e.getActionCommand().equals(\停止生产\ { dd.suspend(); consumerandproducer.mark.setText(\生产已停止\ } } }); jb1.addActionListener(new ActionListener()
正在阅读:
带界面的消费者生产者问题JAVA代码09-24
消费心理学案例分析04-01
领导干部廉政法规知识测试试题02-22
春日里的阳光作文600字06-29
读书随笔02-13
中国民族理论新编常考点05-13
关于进一步加强中小学师德师风建设的02-02
区法院综治信访维稳工作方案-精选模板06-07
PI3-KAKT 信号通路在中枢神经系统损伤中的保护作用06-24
浅议金融安全与我国金融法体系的完善10-21
- 供应商绩效评价考核程序
- 美国加州水资源开发管理历史与现状的启示
- 供应商主数据最终用户培训教材
- 交通安全科普体验教室施工方案
- 井架安装顺序
- 会员积分制度
- 互联网对美容连锁企业的推动作用
- 互联网发展先驱聚首香港
- 公司文档管理规则
- 机电一体化系统设计基础作业、、、参考答案
- 如何选择BI可视化工具
- 互联网产品经理必备文档技巧
- 居家装修风水的布置_家庭风水布局详解
- 全省基础教育信息化应用与发展情况调查问卷
- 中国石油--计算机网络应用基础第三阶段在线作业
- 【知识管理专题系列之五十八】知识管理中如何实现“场景化协同”
- 网络推广方案
- 中国石油--计算机网络应用基础第二阶段在线作业
- 汽车检测与维修技术专业人才培养方案
- 详解胎儿颈透明层
- 生产者
- 面的
- 消费者
- 代码
- 问题
- JAVA
- 优秀求职信写作范例
- 莒南遗址、人物名单
- 科学发展观理论30问
- 青岛版六年制二年级数学上册第八单元平行卷
- 房管局计算房屋建筑面积的方法
- 110~750kV架空输电线路施工图设计内容深度规定(送审稿)
- 电机车司机(初级)标准复习题
- 大学教学论多选题 - 图文
- 金属材料晶粒细化的研究论文修改后
- 09级《大学英语》期末考试范围与题型(A类-II级)
- 2016-2022年中国电路板行业深度监测研究报告 - 图文
- 关于2015届毕业生毕业实习安排意见
- 金融市场 思考题
- 部编人教版八年级语文上册期中测试题(含答案)
- 泡沫问题的数学模型
- 山东省广饶县花官镇中心初中2015-2016学年七年级政治上学期期末模拟测试试题(一)(无答案)
- 数据库试题
- 二甲评审细则支撑材料目录第六章7-11
- 二级展开式圆柱齿轮减速器设计说明书
- 矿山地质学答案 - 图文