这个异常有时出现,有时不出现,不知道是什么原因,希望大家能帮下忙Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.JComponent._paintImmediately(Unknown Source)
at javax.swing.JComponent.paintImmediately(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.seqPaintDirtyRegions(Unknown Source)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

解决方案 »

  1.   

          public int i=0;
      public String filename;
      public String filePath = "";
      public String case_content;
      public JDBCUtil datebase;
      public DownLoad(List list,List namelist)
          {
           
           try { 
         datebase=JDBCUtil.getInstance();   
            setIconImage(Toolkit.getDefaultToolkit().createImage(getClass()
                         .getResource("/net/sf/xpontus/icons/icone.png")));
       JFileChooser choosers = new JFileChooser();//
       choosers.setDialogTitle("保存文件");
        FileNameExtensionFilter filter = new FileNameExtensionFilter("压缩文件(zip)","zip");//
        choosers.addChoosableFileFilter(filter);

        choosers.setFileFilter(filter);

        choosers.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

        int returnVal = choosers.showSaveDialog(this);
       
        if(returnVal == JFileChooser.APPROVE_OPTION)
         filePath = choosers.getSelectedFile().getAbsolutePath();

        else{
            list.clear();
            namelist.clear();
            return;
        }
     
         //构建文件路径
        for(int j=0;j<list.size();j++)
        {
            ResultSet rs=datebase.executeQuery("SELECT * FROM UOF_TEST_CASE WHERE CASE_ID="+Integer.valueOf((String) list.get(j)));
            while(rs.next())
            {
             case_content=rs.getString("CASE_CONTENT");
            }
            if(case_content==null||case_content.equals(""))
            {
                JOptionPane.showMessageDialog(this,"该案例没有文件下载");
             return;
            }else
            {
            
             int cnt=0,start = 0;  
             int m=0;
             while(start!=filePath.length()){  
             m = filePath.indexOf("\\",start);  
             if(m!=-1)  
             {  
               cnt ++;  
               start = m+1;  
             }  
             else  
             break;  
             }  
    //          System.out.println("start="+start);
    //          System.out.println("cnt"+cnt);
                    if(cnt==1&&filePath.length()<=start)
                    {  
    //                  System.out.println("this is"+filePath+namelist.get(j).toString()+".zip");
                     Thread th=new ThreadDownLoad(filePath+namelist.get(j).toString()+".zip", Integer.valueOf((String) list.get(j)));
                        th.start();
                        DefaultXPontusWindowImpl window = (DefaultXPontusWindowImpl) XPontusComponentsUtils.getTopComponent();
                        window.getDocumentTabContainer().createImageView("d:\\unzip\\"+namelist.get(j).toString()+"\\"+namelist.get(j).toString(),Integer.valueOf((String) list.get(j)));
                    }else
                    {
    //                 System.out.println("this is "+filePath+"\\"+namelist.get(j).toString()+".zip");
                     Thread th=new ThreadDownLoad(filePath+"\\"+namelist.get(j).toString()+".zip", Integer.valueOf((String) list.get(j)));
                        th.start();
                        DefaultXPontusWindowImpl window = (DefaultXPontusWindowImpl) XPontusComponentsUtils.getTopComponent();
                        window.getDocumentTabContainer().createImageView("d:\\unzip\\"+namelist.get(j).toString()+"\\"+namelist.get(j).toString(),Integer.valueOf((String) list.get(j)));
                    }
                    
            
                   
    //      downloadNet(Integer.valueOf((String) list.get(j)),filePath+"//"+namelist.get(j).toString()+".zip");
            }
        }
        
         datebase.close();
         } catch (SQLException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
         } catch (Exception ef) {
    // TODO Auto-generated catch block
    ef.printStackTrace();
    }
            list.clear();
            namelist.clear();
          }
      

  2.   

    swing只能调用特定用户线程,来产生多线程的。
      

  3.   

    有可能是这个问题,soli11722984 哪个代码是我修改过了,以前调用下个界面我是在线程里对文件解压后执行的,但是我想的就是并发事件不影响啊,因为我只调用了一次,而且也执行了一件事.
      

  4.   

    csdn 害死我了 居然找不到一个能不用流快速拷贝大文件的方法
    是在没辙