java 多线程在swing中的应用
2015-10-13 20:48
543 查看
在Swing中进行界面设计的时候,如果点击一个耗时的按钮会发现,在这个按钮的监听方法没返回时,是无法按其它按钮的,多线程能很好的解决这个问题.
package test1;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class ThreadFrame extends JFrame{
public static void main(String[] args) {
// TODO Auto-generated method stub
ThreadFrame tf = new ThreadFrame();
tf.setVisible(true);
}
private JButton btn_login;
private JButton btn_register;
private JPanel panel;
public ThreadFrame(){
setDefaultCloseOperation(EXIT_ON_CLOSE);
setBounds(100, 100, 200, 300);
btn_login = new JButton("登陆");
btn_register = new JButton("注册");
panel = new JPanel();
setContentPane(panel);
panel.add(btn_login);
panel.add(btn_register);
class ActionImp implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println(Thread.currentThread().getName()+ "正在注册");
try {
Thread.sleep(7000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("注册完毕");
}
}
btn_register.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
new Thread(new ActionImp()).start();
}
});
btn_login.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
System.out.println("正在登陆");
}
});
/*btn_register.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
try {
System.out.println("正在注册");
Thread.sleep(7000);
System.out.println("注册完毕");
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});*/
}
}
package test1;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class ThreadFrame extends JFrame{
public static void main(String[] args) {
// TODO Auto-generated method stub
ThreadFrame tf = new ThreadFrame();
tf.setVisible(true);
}
private JButton btn_login;
private JButton btn_register;
private JPanel panel;
public ThreadFrame(){
setDefaultCloseOperation(EXIT_ON_CLOSE);
setBounds(100, 100, 200, 300);
btn_login = new JButton("登陆");
btn_register = new JButton("注册");
panel = new JPanel();
setContentPane(panel);
panel.add(btn_login);
panel.add(btn_register);
class ActionImp implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println(Thread.currentThread().getName()+ "正在注册");
try {
Thread.sleep(7000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("注册完毕");
}
}
btn_register.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
new Thread(new ActionImp()).start();
}
});
btn_login.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
System.out.println("正在登陆");
}
});
/*btn_register.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
try {
System.out.println("正在注册");
Thread.sleep(7000);
System.out.println("注册完毕");
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});*/
}
}
相关文章推荐
- Java Classloader详解
- Java_泛型的继承
- 马士兵Java课堂笔记-2-基本数据类型转换问题
- java 策略模式
- javac和java -cp选项情景总结
- eclipse相关问题一:无法import项目,显示 select at list one project
- IK Analyzer demo
- Spring 4.0 + Spring MVC(四)学习
- spring系列之3--iBATIS的使用
- JAVA异常分析
- java环境配置
- Java中的clone方法
- java web 手动部署项目步骤
- Spring4.0集成Junit4测试case
- JAVA 上机作业5.36
- JAVA上机——5.26
- Java 5.36
- struts2学习(一)
- java练习题5.19
- JAVA 输出回文数