框 textArea.setEditable(false);// 设置不可被编辑 getContentPane().add(textArea, BorderLayout.CENTER);// 添加文本域组件到文本 startBtn=new JButton(\开始\); pauseBtn=new JButton(\暂停\); resumeBtn=new JButton(\恢复\); startBtn.addActionListener(this); pauseBtn.addActionListener(this); resumeBtn.addActionListener(this); JPanel panel=new JPanel(); panel.add(startBtn); panel.add(pauseBtn); panel.add(resumeBtn); getContentPane().add(panel,BorderLayout.SOUTH); setBounds(100, 100, 383, 225); // 设置窗体大小位置 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); // 显示窗体 //setLocationRelativeTo(null);//在屏幕中央显示 } //Runnable接口方法,是线程的执行方法 @Override public void run() { String[] intros = introduction.split(\); // 将字符串分割为数组 for (String ch : intros) { // ForEach遍历字符串数组 synchronized (this) { while(allow){ } } try{ wait(); }catch(InterruptedException e){ e.printStackTrace(); } textArea.append(ch); // 添加一个字符到文本域 try { Thread.sleep(100);//【补充代码】 // 线程休眠0.1秒 } catch (InterruptedException e) { e.printStackTrace(); } } startBtn.setEnabled(true); } public static void main(String args[]) { new RunnableDemo(); // 创建本类实例对象 } @Override public void actionPerformed(ActionEvent e) { if(e.getSource()==startBtn){ textArea.setText(\); Thread thread = new Thread(this);//【补充代码】 //创建thread线程,当前窗口做为该线程的目标对象 thread.start();//【补充代码】 //启动thread线程 startBtn.setEnabled(false); }else if(e.getSource()==pauseBtn){ allow=true; }else if(e.getSource()==resumeBtn){ allow=false; synchronized(this){ notifyAll(); } } } }
实验总结
请书写你对本次实验有哪些实质性的收获和体会,以及对本次实验有何良好的建议?
参考文献:
1. 《Java2实用教程(第三版)》耿祥义、张跃平编著,清华大学出版社。
2.《Java2实用教程(第三版)实验指导与习题解答》耿祥义、张跃平编著,清华大学出版社。 3.《Java开发实战宝典》,李钟尉等编著,清华大学出版社。
附录一 Java Code之多态
通过一个简单的例子理解多态的概念 /**
* 人民警察 */
public interface IPolice { /**
* 抓小偷 */
public void catchThief(); }
/**
* 一个警察,执行抓小偷任务. */
public class PoliceReal implements IPolice { public void catchThief() {
System.out.println(\抓住小偷了\); } } /**
* 另一个警察,也执行抓小偷任务. */
public class PoliceHyp implements IPolice { public void catchThief() {
System.out.println(\大冷天的抓什么小偷啊,不如偷个菜.\); } } /** * 市民 */
public class Citizen { private String mName;
public Citizen(String name) { mName = name; } /**
* 市民报案 */
public void report(IPolice police) {
System.out.println(String.format(\市民%s丢失手机,向警察报案抓小偷.\, mName));
police.catchThief(); } }
案情:
市民虽然向警察报了案,
但你不知道能不能把小偷抓住,
甚至你都不知道他们有没有去抓小偷,
还有可能你在电影里看到的剧情真的发生了... 事情经过可能是这样: public class Main {
public static void main(String[] args) { Citizen citizen = new Citizen(\张三\); IPolice police = getPolice(); citizen.report(police); }
private static IPolice getPolice() { return new PoliceReal(); } }
事情结果一:
市民张三丢失手机,向警察报案抓小偷. 抓住小偷了
事情经过也可能是这样: public class Main {
public static void main(String[] args) { Citizen citizen = new Citizen(\张三\); IPolice police = getPolice(); citizen.report(police); }
private static IPolice getPolice() { return new PoliceHyp(); } }
事情结果二:
市民张三丢失手机,向警察报案抓小偷. 大冷天的抓什么小偷啊,不如偷个菜.
事情经过还可能是这样: public class Main {
public static void main(String[] args) { Citizen citizen = new Citizen(\张三\);