package demo01;
import java.awt.FlowLayout;
import java.awt.event.*;import javax.swing.*;public class ThreadDemo extends Thread{
private JFrame frame;
private JTextField jf;
private JButton jb;
private boolean flag = true;
private int i=0;
public ThreadDemo(){
frame = new JFrame();
jf = new JTextField(15);
jb = new JButton("go");
frame.setLayout(new FlowLayout());
frame.add(jf);
frame.add(jb);
jb.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(flag){
try {
this.wait();
} catch (InterruptedException e1) {
e1.printStackTrace();
}
}else{
this.notify();
}
flag = !flag;
}
});
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void run(){
while(true){
try{
Thread.sleep(20);
jf.setText(""+(i++));
}catch(Exception e ){
e.printStackTrace();
}
}
}
public static void main(String[] args){
new ThreadDemo().start();
}
}
我想做到按钮按一下暂停,在按一下数字接着增加。线程方面很多地方不明白,求高手详细讲解,大家都说下是怎么学线程的。有啥好的资料也给小弟发一份,不甚感激。邮箱[email protected]

解决方案 »

  1.   


    package demo01;
    import java.awt.FlowLayout;
    import java.awt.event.*;import javax.swing.*;public class ThreadDemo extends Thread{
    private JFrame frame;
    private JTextField jf;
    private JButton jb;
    private boolean flag = true;
    private int i=0;
    public ThreadDemo(){
    frame = new JFrame();
    jf = new JTextField(15);
    jb = new JButton("go");
    frame.setLayout(new FlowLayout());
    frame.add(jf);
    frame.add(jb);
    jb.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e){
    flag = !flag;
    }
    });
    frame.pack();
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    public void run(){
    while(true){
    if(flag)
    {
    try{
    Thread.sleep(20);
    jf.setText(""+(i++));
    }catch(Exception e ){
    e.printStackTrace();
    }
    }
    }
    }
    public static void main(String[] args){
    new ThreadDemo().start();
    }
    }
      

  2.   

     看看<<JAVA核心卷2>>中对多线程的讲解吧.会很有收获的.