标签的移动与线程控制
来源:互联网 发布:诸葛亮网络用语含义 编辑:程序博客网 时间:2024/04/30 12:56
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Example10_26{
public static void main(String args[]){
new ThreadWin();
}
}
class ThreadWin extends JFrame implements Runnable,ActionListener{
Thread moveOrStop;
JButton start,hang,resume,die;
JLabel moveLabel;
boolean move=false,dead=false;
ThreadWin(){
moveOrStop = new Thread(this); //创建移动标签的线程
start = new JButton("线程开始");
hang=new JButton("线程挂起");
resume=new JButton("线程恢复");
die=new JButton("线程终止");
start.addActionListener(this);
hang.addActionListener(this);
resume.addActionListener(this);
die.addActionListener(this);
moveLabel = new JLabel("线程负责运动我");
moveLabel.setBackground(Color.red);
setLayout(new FlowLayout());
add(start);
add(hang);
add(resume);
add(die);
add(moveLabel);
setSize(500,500);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e){
if(e.getSource() == start){
try {
move = true;
moveOrStop.start(); //启动线程
}
catch(Exception event){}
}
else if(e.getSource() == hang)
move = false;
else if(e.getSource() == resume){
move = true;
resumeThread(); //恢复线程
}
else if(e.getSource() == die)
dead = true;
}
public void run(){
while(true){
while(!move){
try{
hangThread(); //挂起线程
}
catch(InterruptedException e1){}
}
int x = moveLabel.getBounds().x;
int y = moveLabel.getBounds().y;
y = y + 2;
if(y >= 200)
y = 10;
moveLabel.setLocation(x,y);
try{
moveOrStop.sleep(200);
}
catch(InterruptedException e2){}
if(dead==true)
return; //终止线程
}
}
public synchronized void hangThread() throws InterruptedException{
wait();
}
public synchronized void resumeThread(){
notifyAll();
}
}
- 标签的移动与线程控制
- 线程的交换与移动
- 线程的控制与分离
- 线程的调度与控制
- 线程的控制与同步
- 线程的控制与分离
- 线程2:线程的生命周期与控制
- 控制物体的移动与碰撞检测
- 线程的中断阻塞与控制
- RxJava 与RxAndroid 的线程控制
- OpenThreads线程的创建与控制
- 线程的调度与控制 线程的生命周期
- 移动的标签
- 线程创建与控制
- 控制飞机的移动
- 移动控制的使用
- 使用meta标签的【viewport】控制在移动设备上的布局
- 【转】移动机器人控制软件的设计与实现
- Oracle中存储过程和函数的区别
- java静态/动态成员变量、初始化块,父类/子类构造函数执行顺序问题
- 51 数码管静态显示 [李园7舍_404]
- 用栈的思想写的动态迷宫求解
- 看完Oracle视频后的一些实用(正在更新中)
- 标签的移动与线程控制
- 动态汉诺塔(c语言)
- 内部类
- ucos-ii移植笔记(ARM7平台)
- CET,GMT等各种时间总结
- 不用加减乘除完成两数相加
- 第一个代码
- VS HelpLibAgent.exe已停止工作 解决方法
- 关于opencv内存泄露的一些记录