用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - java代码库

线程异常

2015-02-11 作者: java源代码大全举报

[java]代码库

package org.file.win;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;

import org.file.bean.FileBean;
import org.file.util.Search;


public class SearchFrame{
  private static JFrame jf = new JFrame("search - file 软件");  
  private static JTable table;  
  private static JTextField jText = new JTextField(30);
  private static JButton jButton = new JButton("搜索");
  private static JPanel panel = new JPanel();
  private static final Vector<String> columnNames = new Vector<String>();
  private static volatile Vector<Vector<Object>> searchData  = new Vector<Vector<Object>>();
	static{
		
		columnNames.add("名称");
		columnNames.add("位置");
		columnNames.add("类型");
		columnNames.add("修改时间");
		columnNames.add("大小");
	}
    public  SearchFrame()  
    {  
    	Toolkit kit=Toolkit.getDefaultToolkit();
		Dimension screenSize=kit.getScreenSize();
		int screenWidth=screenSize.width;
		int screenHeight=screenSize.height;		
		jf.setSize(screenWidth/2, 500);
		jf.setLocation(screenWidth/4, screenHeight/4);
        panel.add(jText);
        panel.add(jButton);
        jButton.addActionListener(new ActionListener() {
			public synchronized void actionPerformed(ActionEvent e) {
				String path = jText.getText();
				ReftableData.refData(null,false);
				Search.search(path);
			}
		});
        jf.add(panel,BorderLayout.NORTH);
        //以二维数组和一维数组来创建一个JTable对象  
        table = new JTable();  
        table.addMouseListener(new MouseAdapter(){
        	 public void mouseClicked(MouseEvent e) {
        		 if(e.getClickCount()==1){
        			int row  = table.getSelectedRow();
        			jText.setText((String)table.getValueAt(row, 1));
        		 }
        	 }
        });
        
        table.setShowGrid(true);
        synchronized (searchData) {
        	CheckTableModle tableModel= new CheckTableModle(searchData,columnNames);
        	table.setModel(tableModel);
        	jf.add(new JScrollPane(table),BorderLayout.SOUTH);  
        	jf.pack();  
        	jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
        	jf.setVisible(true);  
		}
    }  
    
    public static  class CheckTableModle extends DefaultTableModel {
    	
    	private static final long serialVersionUID = 1L;
    		public CheckTableModle( Vector<Vector<Object>> data, Vector<String> columnNames) {
    			super(data,columnNames);
    	    }
      }
    
    public static void main(String[] args)   
    {  
    		new SearchFrame();
	        try {  
	        	ServerSocket server = new ServerSocket(8888);  
	            while (true) {  
	                Socket client = server.accept();  
	                new Thread(new ServiceSocket(client)).start();  
	            }  
	        } catch (IOException e) {  
	            e.printStackTrace();  
	        }  
    }  
    
    //服务器进程  
    static class ServiceSocket implements Runnable {  
        Socket client;  
        public ServiceSocket(Socket client) {  
            this.client = client;  
        }  
        public synchronized void run() {
			try {
				//3.获得输入流
				InputStream	is = client.getInputStream();
				//获得流:可以对对象进行反序列化
				ObjectInputStream ois=new ObjectInputStream(is);
				//4.读取用户输入信息
				FileBean bean = (FileBean)ois.readObject();
				 System.out.println("接收:" + bean.getName() + " - "+bean.getPath() + " - "+bean.getSize() + " - "+bean.getType()+ " - "+ bean.getTime());
			    	Vector<Object> v = new Vector<Object>();
			    	if(bean !=null){
			    		v.add(bean.getName());
			    		v.add(bean.getPath());
			    		v.add("1");
			    		v.add("1");
			    		v.add("1");
			    	}
			    	ReftableData.refData(v,true);
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (ClassNotFoundException e) {
				e.printStackTrace();
			}
        }  
    }  
  
    static class ReftableData{
    	public synchronized static void refData(Vector<Object> bean,boolean flag){
    		if(flag)
    			searchData.add(bean);
    		else
    			searchData = new Vector<Vector<Object>>();
    		
    		System.out.println(searchData + "-------------------------" + searchData.size());
    		CheckTableModle tableModel=new CheckTableModle(searchData,columnNames);
            table.setModel(tableModel);
            table.validate();
            table.repaint(); 
    	}
    	
    }
} <img src="http://static.oschina.net/uploads/space/2013/1013/173612_fDLq_858822.jpg" alt=""><span></span> //源代码片段来自云代码http://yuncode.net
			


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...