[Java] 线程异常 →→→→→进入此内容的聊天室

来自 , 2020-02-06, 写在 Java, 查看 147 次.
URL http://www.code666.cn/view/db2b4182
  1. package org.file.win;
  2.  
  3. import java.awt.BorderLayout;
  4. import java.awt.Dimension;
  5. import java.awt.Toolkit;
  6. import java.awt.event.ActionEvent;
  7. import java.awt.event.ActionListener;
  8. import java.awt.event.MouseAdapter;
  9. import java.awt.event.MouseEvent;
  10. import java.io.IOException;
  11. import java.io.InputStream;
  12. import java.io.ObjectInputStream;
  13. import java.net.ServerSocket;
  14. import java.net.Socket;
  15. import java.util.Vector;
  16.  
  17. import javax.swing.JButton;
  18. import javax.swing.JFrame;
  19. import javax.swing.JPanel;
  20. import javax.swing.JScrollPane;
  21. import javax.swing.JTable;
  22. import javax.swing.JTextField;
  23. import javax.swing.table.DefaultTableModel;
  24.  
  25. import org.file.bean.FileBean;
  26. import org.file.util.Search;
  27.  
  28.  
  29. public class SearchFrame{
  30.   private static JFrame jf = new JFrame("search - file 软件");  
  31.   private static JTable table;  
  32.   private static JTextField jText = new JTextField(30);
  33.   private static JButton jButton = new JButton("搜索");
  34.   private static JPanel panel = new JPanel();
  35.   private static final Vector<String> columnNames = new Vector<String>();
  36.   private static volatile Vector<Vector<Object>> searchData  = new Vector<Vector<Object>>();
  37.         static{
  38.                
  39.                 columnNames.add("名称");
  40.                 columnNames.add("位置");
  41.                 columnNames.add("类型");
  42.                 columnNames.add("修改时间");
  43.                 columnNames.add("大小");
  44.         }
  45.     public  SearchFrame()  
  46.     {  
  47.         Toolkit kit=Toolkit.getDefaultToolkit();
  48.                 Dimension screenSize=kit.getScreenSize();
  49.                 int screenWidth=screenSize.width;
  50.                 int screenHeight=screenSize.height;            
  51.                 jf.setSize(screenWidth/2, 500);
  52.                 jf.setLocation(screenWidth/4, screenHeight/4);
  53.         panel.add(jText);
  54.         panel.add(jButton);
  55.         jButton.addActionListener(new ActionListener() {
  56.                         public synchronized void actionPerformed(ActionEvent e) {
  57.                                 String path = jText.getText();
  58.                                 ReftableData.refData(null,false);
  59.                                 Search.search(path);
  60.                         }
  61.                 });
  62.         jf.add(panel,BorderLayout.NORTH);
  63.         //以二维数组和一维数组来创建一个JTable对象  
  64.         table = new JTable();  
  65.         table.addMouseListener(new MouseAdapter(){
  66.                  public void mouseClicked(MouseEvent e) {
  67.                          if(e.getClickCount()==1){
  68.                                 int row  = table.getSelectedRow();
  69.                                 jText.setText((String)table.getValueAt(row, 1));
  70.                          }
  71.                  }
  72.         });
  73.        
  74.         table.setShowGrid(true);
  75.         synchronized (searchData) {
  76.                 CheckTableModle tableModel= new CheckTableModle(searchData,columnNames);
  77.                 table.setModel(tableModel);
  78.                 jf.add(new JScrollPane(table),BorderLayout.SOUTH);  
  79.                 jf.pack();  
  80.                 jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  81.                 jf.setVisible(true);  
  82.                 }
  83.     }  
  84.    
  85.     public static  class CheckTableModle extends DefaultTableModel {
  86.        
  87.         private static final long serialVersionUID = 1L;
  88.                 public CheckTableModle( Vector<Vector<Object>> data, Vector<String> columnNames) {
  89.                         super(data,columnNames);
  90.             }
  91.       }
  92.    
  93.     public static void main(String[] args)  
  94.     {  
  95.                 new SearchFrame();
  96.                 try {  
  97.                         ServerSocket server = new ServerSocket(8888);  
  98.                     while (true) {  
  99.                         Socket client = server.accept();  
  100.                         new Thread(new ServiceSocket(client)).start();  
  101.                     }  
  102.                 } catch (IOException e) {  
  103.                     e.printStackTrace();  
  104.                 }  
  105.     }  
  106.    
  107.     //服务器进程  
  108.     static class ServiceSocket implements Runnable {  
  109.         Socket client;  
  110.         public ServiceSocket(Socket client) {  
  111.             this.client = client;  
  112.         }  
  113.         public synchronized void run() {
  114.                         try {
  115.                                 //3.获得输入流
  116.                                 InputStream     is = client.getInputStream();
  117.                                 //获得流:可以对对象进行反序列化
  118.                                 ObjectInputStream ois=new ObjectInputStream(is);
  119.                                 //4.读取用户输入信息
  120.                                 FileBean bean = (FileBean)ois.readObject();
  121.                                  System.out.println("接收:" + bean.getName() + " - "+bean.getPath() + " - "+bean.getSize() + " - "+bean.getType()+ " - "+ bean.getTime());
  122.                                 Vector<Object> v = new Vector<Object>();
  123.                                 if(bean !=null){
  124.                                         v.add(bean.getName());
  125.                                         v.add(bean.getPath());
  126.                                         v.add("1");
  127.                                         v.add("1");
  128.                                         v.add("1");
  129.                                 }
  130.                                 ReftableData.refData(v,true);
  131.                         } catch (IOException e) {
  132.                                 // TODO Auto-generated catch block
  133.                                 e.printStackTrace();
  134.                         } catch (ClassNotFoundException e) {
  135.                                 e.printStackTrace();
  136.                         }
  137.         }  
  138.     }  
  139.  
  140.     static class ReftableData{
  141.         public synchronized static void refData(Vector<Object> bean,boolean flag){
  142.                 if(flag)
  143.                         searchData.add(bean);
  144.                 else
  145.                         searchData = new Vector<Vector<Object>>();
  146.                
  147.                 System.out.println(searchData + "-------------------------" + searchData.size());
  148.                 CheckTableModle tableModel=new CheckTableModle(searchData,columnNames);
  149.             table.setModel(tableModel);
  150.             table.validate();
  151.             table.repaint();
  152.         }
  153.        
  154.     }
  155. } <img src="http://static.oschina.net/uploads/space/2013/1013/173612_fDLq_858822.jpg" alt=""><span></span> //源代码片段来自云代码http://yuncode.net
  156.                        

回复 "线程异常"

这儿你可以回复上面这条便签

captcha