问题 问答题

请完成下列Java程序;创建一个进度条,可以控制其开始和暂停。要求进度条与线程关联,由线程控制,点击Start按钮开始进度条的滚动,点击Stop按钮,暂停,继续点击Start按钮则继续进行。 注意:请勿改动main()主方法和其他已有语句内容,仅在下划线处填入适当的语句。 程序运行结果如下:

import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*; public class ex22_2 extends JPanel{ ThreadProg thProgress; JProgressBar jpb;//声明一个进程条对象 static JFrame if; public ex22_2() { setLayout(new BorderLayout()); jpb=new JProgressBar(); add(jpb,"Center"); JPanel btnPanel = new JPanel(); JButton btnStart = new JButton("Start"); btnPanel.add(btnStart); btnStart.addActionListener(new ActionListener()public void actionPerformed(ActionEvent ae) { _______________;}}); JButton btnStop = new JButton("Stop"); btnPanel.add(btnStop); btnStop.addActionListener(new ActionListener()public void actionPerformed(ActionEvent ae) { ____________;}}); add(btnPanel, BorderLayout. SOUTH); } public void startProgress() { if(thProgress == null|| !thProgress.isAlive())thProgress = new ThreadProg(jpb);thProgress.start(); } } public void stopProgress() { thProgress.setStop(true); } public static void main(String args[]){ jf = new JFrame("ex22_2"); ex22_2 obj22_2 = new ex22_2(); jf.getContentPane().add("Center",obj22_2); jf.setSize(250,80); jf.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent we) { System.exit(O);}}); jf.setVisible(true); } } class ThreadProg extends Thread { private JProgressBar jpb; private boolean bStop = false; private boolean bAlive = false; public ThreadProg(JProgressBar jpb){ this.jpb = jpb; } public void setStop(boolean b){ bStop = b; } public void run () { int min = 0; int max = 60; jpb.setMinimum(min); jpb.setMaximum(max); jpb.setValue(min); for (int x=min;x<=max;x++) (if(bStop){break;}else{ jpb. setValue (x); try { Thread. sleep (150); } catch (InterruptedException e) { }} } bAlive = false; } }

答案

参考答案:

解析:startProgress() stopProgress() 本题主要考查swing图形用户界面编程以及多线程编程相结合。解题关键是掌握进度条JProgressBar类的基本用法及其与多线程相结合的编程方法,会继承Thread类写自己的线程类,完成需要的功能,线程的开始与暂停被封装在ThreadProg类中。本题中,第1个空,根据点击Start按钮事件调用startProgress()方法启动线程;第2个空,根据点击Stop按钮事件调用stopProgress()方法暂停线程。

单项选择题
问答题

张某是某知名软件公司开发部的高级工程师,自1995年进入公司以来,表现十分出色,每次接到任务时总能在规定时间内按要求完成,并时常受到客户的表扬。在项目进行时还常常主动提出建议,调整计划,缩短开发周期,节约开发成本。但在最近的几个月里情况发生了变化,他不再精神饱满地接受任务了,同时他负责的几个开发项目均未能按客户要求完成,工作绩效明显下降。开发部新任经理方某根据经验判断,导致张某业绩下降的原因是知识结构老化,不再能胜任现在的工作岗位了。他立即向人力资源部提交了《关于部门人员培训需求的申请》,希望人力资源部能尽快安排张某参加相关的业务知识培训,让张某开阔一下思路。人力资源部接到申请后,在当月即安排张某参加了一个为期一周的关于编程方面的培训、研讨会。一周培训结束回到公司后,张某的状况没有出现任何改变。
人力资源部主动与张某进行了面对面的沟通,发现了问题的关键。张某工作绩效下降的关键是对新上任的方经理的领导方法不满意,同时认为自己是公司的老员工,不论是工作能力还是技术能力都可以胜任部门经理的工作,但公司却没有给他晋升的机会。其实导致张某工作绩效下降的真正原因,一是与新任经理的关系不太融洽;二是因为自己没有得到晋升的机会,而不是因为知识结构的老化。
请回答下列问题:
(1)这次培训失败的主要原因是什么
(2)你从这个培训无效案例中得到了什么启示