import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class ShowState extends JFrame implements ActionListener, Runnable{
JTextArea ta;
JButton button_start,button_interrupt,button_terminate;
JTextField text_state;
JLabel label;
Thread t;
public ShowState(){ super("演示线程状态"); this.setSize(450,300); this.setLocation(200,200);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
ta=new JTextArea(); ta.setAutoscrolls(true); this.add(ta);
button_start=new JButton("启动");
button_start.addActionListener(this); button_interrupt=new JButton("中断");
button_interrupt.addActionListener(this);
button_terminate=new JButton("线程结束后");
button_terminate.addActionListener(this);
button_terminate.setEnabled(false);
button_interrupt.setEnabled(false);
t=new Thread(this); //创建线程对象,目标对象是当前对象
label=new JLabel("线程状态:");
text_state=new JTextField("u"+t.getState(),10);
text_state.setEditable(false); JPanel panel=new JPanel(); panel.setLayout(new FlowLayout(0)); panel.add(button_start); panel.add(button_interrupt); panel.add(button_terminate); panel.add(label); panel.add(text_state); this.add(panel,BorderLayout.SOUTH); this.setVisible(true);
}
public static void main(String args[]){
new ShowState();
}
public void actionPerformed(ActionEvent e){
//TODO自动生成方法存根
if(e.getSource()==button_start){ //单击启动按钮时
t=new Thread(this); //重新创建一个线程对象
t.start();
text_state.setText("…"+t.getState()); //显示线程状态 button_start.setEnabled(false); button_interrupt.setEnabled(true);
}
if(e.getSource()==button_interrupt){ //单击中断按钮时 t.interrupt(); //对线程设置中断标记 text_state.setText("“+t.getState());
button_start.setEnabled(true); button_terminate.setEnabled(true); button_interrupt.setEnabled(false);
}
if(e.getSource()==button_terminate){
//单击·线程终止后·按钮时,显示线程终止后的状态
text_state.setText("™"+t.getState());
}
}
public void run(){
//TODO自动生成方法存根
int i=1;
while(t.isAlive()&&!t.isInterrupted()){ //线程活动且没有中断
String str="a";
if(i%20==0)
str+="\n";
i++;
ta.append(str); try{
t.sleep(100);
}catch(InterruptedException e){
//TODO自动生成catch块
break; //退出循环
}
}
} //run()方法的执行结束,线程对象终止
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Java面向对象程序设计例题Chapter8.zip (69个子文件)
Example8.3
src
ShowState.java 3KB
out
production
BankAccount
ShowState.class 4KB
.idea
workspace.xml 3KB
misc.xml 269B
modules.xml 269B
.gitignore 190B
BankAccount.iml 433B
.gitignore 344B
Example8.5
src
MultiWithDraw.java 955B
Account.java 698B
out
production
BankAccount
Account.class 807B
MultiWithDraw.class 2KB
.idea
workspace.xml 3KB
misc.xml 269B
modules.xml 269B
.gitignore 190B
BankAccount.iml 433B
.gitignore 344B
Example8.1
src
PrintNumber.java 597B
PrintLetter.java 397B
out
production
BankAccount
PrintLetter.class 711B
PrintNumber.class 898B
.idea
workspace.xml 3KB
misc.xml 269B
modules.xml 269B
.gitignore 190B
BankAccount.iml 433B
.gitignore 344B
Example8.2
src
PrintLetter.java 1013B
out
production
BankAccount
PrintLetter.class 732B
PrintNumber.class 1KB
.idea
workspace.xml 3KB
misc.xml 269B
modules.xml 269B
.gitignore 190B
BankAccount.iml 433B
.gitignore 344B
Example.8.7
src
Procedure.java 2KB
Buffer.java 1KB
out
production
BankAccount
Procedure.class 1KB
Consumer.class 2KB
Buffer.class 470B
.idea
workspace.xml 3KB
misc.xml 269B
modules.xml 269B
.gitignore 190B
BankAccount.iml 433B
.gitignore 344B
Example8.4
src
MultiWithDraw.java 851B
Account.java 698B
out
production
BankAccount
Account.class 807B
MultiWithDraw.class 2KB
.idea
workspace.xml 3KB
misc.xml 269B
modules.xml 269B
.gitignore 190B
BankAccount.iml 433B
.gitignore 344B
Example8.6
src
Procedure.java 2KB
Buffer.java 330B
out
production
BankAccount
Procedure.class 1KB
Consumer.class 2KB
Buffer.class 470B
.idea
workspace.xml 3KB
misc.xml 269B
modules.xml 269B
.gitignore 190B
BankAccount.iml 433B
.gitignore 344B
共 69 条
- 1
资源评论
iceslime
- 粉丝: 582
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功