class Face exteds JFrame implements ActionListener{
  public void actionPerformed(ActionEvent e){
     if(e.getSource()==jbutton){
        线程1;
        线程2;
     }
  }
}我希望单击jbutton后线程1, 线程2,主界面的AWT-Windows线程这三个线程都有机会执行,而现在这个例子只会执行线程1,线程2请会的诰诉我方法,非常感谢..........................

解决方案 »

  1.   

    一种方法是你自己定义一个匿名内部类(实现Runnable接口)去响应这个按钮操作,这样的话AWT-Windows线程能够继续响应用户的操作。或者,在JDK1.6+后,提供了SwingWorker类,用于执行后台的处理而不影响界面线程的处理,详细介绍可见JDK 1.60 API文档。
      

  2.   

    AWT-Windows放在主线程里面,这样在开始线程1和2后 ,AWT-Windows就仍在执行。
      

  3.   

    在线程2的末尾加个return行不行?
      

  4.   

    我觉得你的程序肯定写的的有问题 如果你是在线程里调用 thread1.start(); 他和thread.strart()那两个线程一定都会很快执行。猜想你是不是调用的thread1.run(); 和 thread2.run()?
      

  5.   

    哈 今天把AWT和事件看完了 刚开始看线程,MARK一下
      

  6.   

    public void actionPerformed(ActionEvent e) {
    if(checkbox.isSelected()){
    Thread t=new Thread(){
    public void run(){
    FileInputStream fis=null;
    FileOutputStream fos=null;
    try {
    fis=new FileInputStream(sourceText.getText());
    fos=new FileOutputStream(newText.getText());
    bar.setMaximum((int)l);
    while(fis.available()>0){
    fos.write(fis.read()^Integer.parseInt(text.getText()));
    bar.setValue(i++);
    try {
    Thread.sleep(10);
    } catch (InterruptedException e1) {
    e1.printStackTrace();
    }
    }
    JOptionPane.showMessageDialog(frame, "文件加密/解密成功!");
    clear();
    } catch (FileNotFoundException ex) {
    ex.printStackTrace();
    } catch (IOException ex) {
    ex.printStackTrace();
    }finally{
    try {
    if(fis!=null){ fis.close();}
    if(fos!=null){fos.close();}
    } catch (IOException ex) {}
    }
    }
    };
    t.start();
    lz参考一下吧
      

  7.   

    SwingUtilities.invokerLater,
    用swing自带的线程处理方式、
      

  8.   

    class Face exteds JFrame implements ActionListener{
      public void actionPerformed(ActionEvent e){
        if(e.getSource()==jbutton){
            java.util.Random random = new java.util.Random();
            int i = random.nextInt(3);
            switch (i) {
    case 0:
    线程1;
    break;
    case 1:
    线程2;
    break;
    default:
    线程3;
    }
        }
      }